rocPyDecode demuxer class#
Instantiation#
To instantiate a demuxer instance, pass the video file name and path as the input parameter.
Example:#
# demuxer instance
demuxer = dmx.demuxer(input_file_path)
Member functions#
The following are the member functions of the demuxer class.
Demux the input video file and returns a Packet structure for use in decoding the demuxed frames.
Example:#
while True:
        packet = demuxer.DemuxFrame()
        n_frame_returned = viddec.DecodeFrame(packet)
        for i in range(n_frame_returned):
                viddec.GetFrame(packet)
                # save frames
                surface_info = viddec.GetOutputSurfaceInfo()
                viddec.SaveFrameToFile(output_file_path, packet.frame_adrs, surface_info)
                # release frame
                viddec.ReleaseFrame(packet)
                if (packet.frame_size <= 0):  # EOF: no more to decode
                        break
GetCodecId()#
Returns the demux codec ID to be used in later decoder functions.
Example:#
# demuxer instance
demuxer = dmx.demuxer(input_file_path)
# get the used coded id
codec_id = dec.GetRocDecCodecID(demuxer.GetCodecId())
# decoder instance
viddec = dec.decoder(device_id, mem_type, codec_id, b_force_zero_latency, crop_rect, 0, 0, 1000)
SeekFrame(frame_number, seek_mode, seek_criteria)#
Demux the input video file starting from the specified seek parameters. Returns a Packet structure for use in decoding the demuxed frames.
Input: - frame_number: Seek this number of frames - seek_mode: 0 - Seek by exact frame number, 1 - Seek by previous key frame - seek_criteria: 0 - Seek by frame number, 1 - Seek by time stamp
Example:#
not_seeking = False
seek_frame = 100     # seek to the 100th frames
seek_mode = 0        # by exact frame number
seek_criteria = 0    # by frame number
# The decoding loop to start by seek
while True:
        start_time = datetime.datetime.now()
        if(not_seeking):
                packet = demuxer.DemuxFrame()
        else:
                packet = demuxer.SeekFrame(seek_frame, seek_mode, seek_criteria)
                not_seeking = True