viddec: Drop frames if out of segment
Drop the decoded frames, don't post to next element
if the frame is out of the current segment.
Signed-off-by: Ramprasad N <x0038811@ti.com>
Drop the decoded frames, don't post to next element
if the frame is out of the current segment.
Signed-off-by: Ramprasad N <x0038811@ti.com>
h264dec: Support for frame-processing for interlaced streams
For interlaced streams h264parse sends input for both the fields
in one pad_push. This results in dcuati decoder to consume data
for one field.
Settig processCallLevel to FrameLevel processing, decoder will
consume both the fields.
Signed-off-by: Ramprasad N <x0038811@ti.com>
For interlaced streams h264parse sends input for both the fields
in one pad_push. This results in dcuati decoder to consume data
for one field.
Settig processCallLevel to FrameLevel processing, decoder will
consume both the fields.
Signed-off-by: Ramprasad N <x0038811@ti.com>
h264dec: Add a property to set display-delay
H264decoder supports display from 0 to 16. Default setting
is AUTO where decoder selects display-delay based on the
stream's property.
For certain usecases like car-play, it requires low
delay between decoder and display.
Application can now configure display-delay of h264decoder
with this property.
Signed-off-by: Ramprasad N <x0038811@ti.com>
H264decoder supports display from 0 to 16. Default setting
is AUTO where decoder selects display-delay based on the
stream's property.
For certain usecases like car-play, it requires low
delay between decoder and display.
Application can now configure display-delay of h264decoder
with this property.
Signed-off-by: Ramprasad N <x0038811@ti.com>
mpeg4dec: Enable errorConcealment in mpeg4dec
Enable errorConcealment of MPEG4 decoder to TRUE always
and set the remaining extended variables to their
default values
Signed-off-by: Ramprasad N <x0038811@ti.com>
Enable errorConcealment of MPEG4 decoder to TRUE always
and set the remaining extended variables to their
default values
Signed-off-by: Ramprasad N <x0038811@ti.com>
mpeg2dec: close meta-plane fd in finalize
close file descriptor created for meta-plane buffer.
omap_bo_dmabuf creates a dup file descriptor for the caller to use
the buffers. The caller needs to explicitly close the dup fd to avoid
any fd leak. Adding the close of fd for the meta-plane buffer
and avoding explict call of dce_buf_lock for this fd.
Signed-off-by: Ramprasad N <x0038811@ti.com>
close file descriptor created for meta-plane buffer.
omap_bo_dmabuf creates a dup file descriptor for the caller to use
the buffers. The caller needs to explicitly close the dup fd to avoid
any fd leak. Adding the close of fd for the meta-plane buffer
and avoding explict call of dce_buf_lock for this fd.
Signed-off-by: Ramprasad N <x0038811@ti.com>
gstducati:Enable error concealment for mpeg2dec
For some erroneous streams, decoded output look shaky.
Enabling error concealment resolves shakiness issue.
MPEG2 decoder expects an MBInfo metata data buffer also
to be allocated when error concealment is enabled.
MBInfo metata buffer size depends on the resolution of the stream.
The size is hardcoded for maximum resoltuion of 1920x1080 and
around 3MB of buffer is allocated for metadata buffer.
Signed-off-by: Ramprasad N <x0038811@ti.com>
For some erroneous streams, decoded output look shaky.
Enabling error concealment resolves shakiness issue.
MPEG2 decoder expects an MBInfo metata data buffer also
to be allocated when error concealment is enabled.
MBInfo metata buffer size depends on the resolution of the stream.
The size is hardcoded for maximum resoltuion of 1920x1080 and
around 3MB of buffer is allocated for metadata buffer.
Signed-off-by: Ramprasad N <x0038811@ti.com>
videnc:Fix memory leak issue
ducatividenc is not freeing one configuration structure
in handle_frame function which results in memory
leak for every frame.
Signed-off-by: Ramprasad N <x0038811@ti.com>
ducatividenc is not freeing one configuration structure
in handle_frame function which results in memory
leak for every frame.
Signed-off-by: Ramprasad N <x0038811@ti.com>
mpeg4dec: skip frame processing for large frame size
We have seen some cases where the mpeg4 parser element
demuxes the file incorrectly and presents the nal_size
as a very large chunk.
In such cases, when the ducati plugin tries to copy the
buffer into the input buffer it results in a SIGSEGV
in the push_input function. The input buffer size is
configured as height*width bytes (with some padding)
and for the error case, we may overrun the buffer during
the memcpy operation.
This patch introduces a check to prevent copying beyond
the input buffer size.
Signed-off-by: Karthik Ramanan <a0393906@ti.com>
We have seen some cases where the mpeg4 parser element
demuxes the file incorrectly and presents the nal_size
as a very large chunk.
In such cases, when the ducati plugin tries to copy the
buffer into the input buffer it results in a SIGSEGV
in the push_input function. The input buffer size is
configured as height*width bytes (with some padding)
and for the error case, we may overrun the buffer during
the memcpy operation.
This patch introduces a check to prevent copying beyond
the input buffer size.
Signed-off-by: Karthik Ramanan <a0393906@ti.com>
decoder: Increase number of buffers in pool
In corner cases where the max-ref frames is 3,
the pipeline may get locked-up. Ideally waylandsink
holds 2 buffers at a time, but there can be cases
where the render callback is delayed. This causes
3 buffers to be held by waylandsink. Increasing number
of buffers in bufferpool prevents this lock-up.
Signed-off-by: Pooja Prajod <a0132412@ti.com>
In corner cases where the max-ref frames is 3,
the pipeline may get locked-up. Ideally waylandsink
holds 2 buffers at a time, but there can be cases
where the render callback is delayed. This causes
3 buffers to be held by waylandsink. Increasing number
of buffers in bufferpool prevents this lock-up.
Signed-off-by: Pooja Prajod <a0132412@ti.com>
mpeg2dec: Fix negotiation issue with playbin
For certain streams height, width etc are not available
in the first parse. This results in playbin not picking
ducati for decoding. This has been observed only for mpeg2
streams. So mpeg2dec caps is modified to accept streams
even without height and width info. In such cases, the default
resolution is assumed to be 1920x1080.
Signed-off-by: Pooja Prajod <a0132412@ti.com>
For certain streams height, width etc are not available
in the first parse. This results in playbin not picking
ducati for decoding. This has been observed only for mpeg2
streams. So mpeg2dec caps is modified to accept streams
even without height and width info. In such cases, the default
resolution is assumed to be 1920x1080.
Signed-off-by: Pooja Prajod <a0132412@ti.com>
gstducati: add JPEG Encoder
Signed-off-by: Hongmei Gou <h-gou@ti.com>
Signed-off-by: Hongmei Gou <h-gou@ti.com>
gstducati : Fix Segfault for VC1 decode
Some VC1 streams uses the codec_data for decode. So we shouldn't
unref the codec_data buffer as this destroys the codec_data.
Signed-off-by: Pooja Prajod <a0132412@ti.com>
Some VC1 streams uses the codec_data for decode. So we shouldn't
unref the codec_data buffer as this destroys the codec_data.
Signed-off-by: Pooja Prajod <a0132412@ti.com>
gstducati: Fix memleak due to unreffed codec-data
This patch fixes a memleak caused incase of streams with
codecdata in the caps. This data is written into a buffer
and stored as a part of the codec instance. The buffer
needs to be freed after this. The patch also reduces the
number of caps copy
Signed-off-by: Pooja Prajod <a0132412@ti.com>
This patch fixes a memleak caused incase of streams with
codecdata in the caps. This data is written into a buffer
and stored as a part of the codec instance. The buffer
needs to be freed after this. The patch also reduces the
number of caps copy
Signed-off-by: Pooja Prajod <a0132412@ti.com>
gstducati: Fix memleak due to unreffed events and caps
There is a memory leak due to unreffed events on gst-ducati.
Whenever there is the event is not propagated to the peer
element we need to unref the events and then return. Same applies
to caps in query.
Signed-off-by: Pooja Prajod <a0132412@ti.com>
There is a memory leak due to unreffed events on gst-ducati.
Whenever there is the event is not propagated to the peer
element we need to unref the events and then return. Same applies
to caps in query.
Signed-off-by: Pooja Prajod <a0132412@ti.com>
gstducati decoder: Disable externalpool acceptance
The decoder can know the max-ref frames for a stream.
This info can be used for optimizing buffer allocation.
But this info is available only after first buffer is
given to IVA-HD. Since this is a parameter known to the decoder,
it is better to let the decoder manage it's own pool, rather
than adapting all elements to parse the caps for this info.
We used to allocate some extra buffers taking into consideration
the buffers held by the sink (=n). This is mainly to avoid a deadlock
in case of streams with <=n max-ref frames. To optimize buffer
allocation, num_buffers is calculated as MAX(4, max-ref). This ensures
no deadlock and minimize buffer allocated incase of streams with higher max-ref.
Signed-off-by: Pooja Prajod <a0132412@ti.com>
The decoder can know the max-ref frames for a stream.
This info can be used for optimizing buffer allocation.
But this info is available only after first buffer is
given to IVA-HD. Since this is a parameter known to the decoder,
it is better to let the decoder manage it's own pool, rather
than adapting all elements to parse the caps for this info.
We used to allocate some extra buffers taking into consideration
the buffers held by the sink (=n). This is mainly to avoid a deadlock
in case of streams with <=n max-ref frames. To optimize buffer
allocation, num_buffers is calculated as MAX(4, max-ref). This ensures
no deadlock and minimize buffer allocated incase of streams with higher max-ref.
Signed-off-by: Pooja Prajod <a0132412@ti.com>
gst-ducati: Migrate to gst 1.6.3 (V2)
The patch has been reworked to apply cleanly on the top-most commit
Signed-off-by: Pooja Prajod <a0132412@ti.com>
The patch has been reworked to apply cleanly on the top-most commit
Signed-off-by: Pooja Prajod <a0132412@ti.com>
gst-ducati: Configure bufferpool to pre-allocate buffers
A bufferpool can be configured pre-allocate buffers. This restricts
the number of buffers available at any point of time to a fixed number.
In case of decode this fixed number can be calculated based on max-ref-frames.
Signed-off-by: Pooja Prajod <a0132412@ti.com>
A bufferpool can be configured pre-allocate buffers. This restricts
the number of buffers available at any point of time to a fixed number.
In case of decode this fixed number can be calculated based on max-ref-frames.
Signed-off-by: Pooja Prajod <a0132412@ti.com>
mpeg4decode: Prevent skipping of non-VOP coded frames
Signed-off-by: Karthik Ramanan <a0393906@ti.com>
Signed-off-by: Karthik Ramanan <a0393906@ti.com>
viddec: Fix for performing cleanup only during error scenario
The patch fixes the condition for initiating cleanup.
Fixes issue with commit : ad82046
In the earlier case, the cleanup and exit was being invoked during
normal flush case as well.
Signed-off-by: Karthik Ramanan <a0393906@ti.com>
The patch fixes the condition for initiating cleanup.
Fixes issue with commit : ad82046
In the earlier case, the cleanup and exit was being invoked during
normal flush case as well.
Signed-off-by: Karthik Ramanan <a0393906@ti.com>
Exit application with cleanup for certain process call errors
Certain process call return values signify underlying layer crash. In such cases playback would fail
and there is no point of subsequent process calls unless restart and resume logic is not implemented.
The codec_process return value is matched with DCE_EXDM_UNSUPPORTED, DCE_EIPC_CALL_FAIL, DCE_EINVALID_INPUT
and matched with FAIL case to cleanup and exit.
Signed-off-by: Pooja Prajod <a0132412@ti.com>
Certain process call return values signify underlying layer crash. In such cases playback would fail
and there is no point of subsequent process calls unless restart and resume logic is not implemented.
The codec_process return value is matched with DCE_EXDM_UNSUPPORTED, DCE_EIPC_CALL_FAIL, DCE_EINVALID_INPUT
and matched with FAIL case to cleanup and exit.
Signed-off-by: Pooja Prajod <a0132412@ti.com>
viddec: Ignore identical caps set in sink_setcaps
Signed-off-by: Harinarayan Bhatta <harinarayan@ti.com>
Signed-off-by: Harinarayan Bhatta <harinarayan@ti.com>
Add max-ref-frames to decoder output caps
VIDDEC3_Status tells the maximum number of buffers needed for
frame-reordering depending on the codec, profile, level, etc.
Export this information in output caps to help downstream
elements with buffer allocation.
Signed-off-by: Harinarayan Bhatta <harinarayan@ti.com>
VIDDEC3_Status tells the maximum number of buffers needed for
frame-reordering depending on the codec, profile, level, etc.
Export this information in output caps to help downstream
elements with buffer allocation.
Signed-off-by: Harinarayan Bhatta <harinarayan@ti.com>
Enable ducatih264dec to accept more streams
1. Enable level 5 and 5.1 streams in the plugin since it is supported
by the codec. But, level 4.2 is still selected by default for
codec creation and it switched to 5.1 if needed. This allows
for saving memory for simultaneous playback of 2 or more lower
level streams.
2. For some inputs such as elementary streams and mpeg2ts streams
the parser element (h264parse) fails to add framerate and profile
information in their output caps thus resulting in failure to
form the decode pipeline even though ducati264dec is capable of
decoding these streams. Since these caps are not mandatory for
codec creation, it could be removed from sink caps template thus
allowing playback of these files.
Signed-off-by: Pooja Prajod <a0132412@ti.com>
Signed-off-by: Harinarayan Bhatta <harinarayan@ti.com>
1. Enable level 5 and 5.1 streams in the plugin since it is supported
by the codec. But, level 4.2 is still selected by default for
codec creation and it switched to 5.1 if needed. This allows
for saving memory for simultaneous playback of 2 or more lower
level streams.
2. For some inputs such as elementary streams and mpeg2ts streams
the parser element (h264parse) fails to add framerate and profile
information in their output caps thus resulting in failure to
form the decode pipeline even though ducati264dec is capable of
decoding these streams. Since these caps are not mandatory for
codec creation, it could be removed from sink caps template thus
allowing playback of these files.
Signed-off-by: Pooja Prajod <a0132412@ti.com>
Signed-off-by: Harinarayan Bhatta <harinarayan@ti.com>
Reduce mem copying and code clean-up
1. Replace buffer_extract with buffer map and buffer fill, thus
avoiding a memory copy.
2. Cleanup some unnecessary code in gst_ducati_viddec_chain.
3. Gst ducati plugin accepts external bufferpool from peer. Fix
a memory leak by freeing this in finalize function.
Signed-off-by: Pooja Prajod <a0132412@ti.com>
Signed-off-by: Harinarayan Bhatta <harinarayan@ti.com>
1. Replace buffer_extract with buffer map and buffer fill, thus
avoiding a memory copy.
2. Cleanup some unnecessary code in gst_ducati_viddec_chain.
3. Gst ducati plugin accepts external bufferpool from peer. Fix
a memory leak by freeing this in finalize function.
Signed-off-by: Pooja Prajod <a0132412@ti.com>
Signed-off-by: Harinarayan Bhatta <harinarayan@ti.com>
Indentation corrections using gst-indent
Fix indentation by running common/gst-indent
Signed-off-by: Harinarayan Bhatta <harinarayan@ti.com>
Fix indentation by running common/gst-indent
Signed-off-by: Harinarayan Bhatta <harinarayan@ti.com>
Enhance handling of bufferpool allocated by peer
Ducati decoder accepts bufferpool allocated by peer
provided it is a dmabuf buffer with fd as metadata. The query
can be done once and bufferpool obtained can be reused.
The patch implements this enhancement. It also corrects
the handling bufferpool which doesnot allocate dmabuf buffer
Signed-off-by: Pooja Prajod <a0132412@ti.com>
Ducati decoder accepts bufferpool allocated by peer
provided it is a dmabuf buffer with fd as metadata. The query
can be done once and bufferpool obtained can be reused.
The patch implements this enhancement. It also corrects
the handling bufferpool which doesnot allocate dmabuf buffer
Signed-off-by: Pooja Prajod <a0132412@ti.com>
Enables accepting buffers from peer
Enables usage along with plugins like VPE that insists on providing buffers
Enables usage along with plugins like VPE that insists on providing buffers
Solves wrong codec_data extract issue
gstducati: Enabled encoder plugin registration
Signed-off-by: Karthik Ramanan <a0393906@ti.com>
Signed-off-by: Karthik Ramanan <a0393906@ti.com>
Makefile: Enable encoders
Signed-off-by: Karthik Ramanan <a0393906@ti.com>
Signed-off-by: Karthik Ramanan <a0393906@ti.com>
Adds Ducati Encoder support
Ports gst-plugins-ducati decode to gstreamer1.2.3
This patch makes the necessary changes on the gst-plugins-ducati
decode files so that it becomes compatible with gstreamer1.2.
However the plugins will no longer be compatible with gstreamer0.10
after the patch is applied.
Signed-off-by: Karthik Ramanan <a0393906@ti.com>
This patch makes the necessary changes on the gst-plugins-ducati
decode files so that it becomes compatible with gstreamer1.2.
However the plugins will no longer be compatible with gstreamer0.10
after the patch is applied.
Signed-off-by: Karthik Ramanan <a0393906@ti.com>
Fixes indentation issues
mpeg4dec: Workaround: Artifacts when frame-drop logic is activated
mpeg4videoparse element does not correctly mark key frames vs non
key frames for frame drop logic in gst-ducati to work. As a
workaround, frame drops are disabled for mpeg4.
Signed-off-by: Harinarayan Bhatta <harinarayan@ti.com>
mpeg4videoparse element does not correctly mark key frames vs non
key frames for frame drop logic in gst-ducati to work. As a
workaround, frame drops are disabled for mpeg4.
Signed-off-by: Harinarayan Bhatta <harinarayan@ti.com>
vc1dec: Increase Y padding for interlaced streams
Y padding is 40 lines at the top and bottom is enough for
progressive streams, but for interlaced streams this needs
to be (4 * 40), 2 each for each field.
Signed-off-by: Harinarayan Bhatta <harinarayan@ti.com>
Y padding is 40 lines at the top and bottom is enough for
progressive streams, but for interlaced streams this needs
to be (4 * 40), 2 each for each field.
Signed-off-by: Harinarayan Bhatta <harinarayan@ti.com>
videnc: Change omapbo to dmabuf fd and add dce_buf_lock/unlock
Changes imposed by IPC3.x, were already done for decoder.
Signed-off-by: Harinarayan Bhatta <harinarayan@ti.com>
Changes imposed by IPC3.x, were already done for decoder.
Signed-off-by: Harinarayan Bhatta <harinarayan@ti.com>
Fix errors in handling H.264 streams with field coded pictures
When the ducati decoder is handed a H.264 (or other) stream which
use 1 field (instead of 1 frame) encoded in 1 access-unit, it sets
the outbufsInUse flag after the first field is decoded to indicate
that the same output buffer (and inputID) should be passed in the
next VIDDEC3_process call for the second field to complete decoding
of the full frame.
This patch fixes some errors for this case, specifically of dce_buf_lock
getting called twice when the same inputID was passed to VIDDEC3_process
call. In this patch, a hash table is introduced to properly track buffers
that have been 'lock'ed and 'unlock'ing them after use for proper cleanup.
Signed-off-by: Harinarayan Bhatta <harinarayan@ti.com>
When the ducati decoder is handed a H.264 (or other) stream which
use 1 field (instead of 1 frame) encoded in 1 access-unit, it sets
the outbufsInUse flag after the first field is decoded to indicate
that the same output buffer (and inputID) should be passed in the
next VIDDEC3_process call for the second field to complete decoding
of the full frame.
This patch fixes some errors for this case, specifically of dce_buf_lock
getting called twice when the same inputID was passed to VIDDEC3_process
call. In this patch, a hash table is introduced to properly track buffers
that have been 'lock'ed and 'unlock'ing them after use for proper cleanup.
Signed-off-by: Harinarayan Bhatta <harinarayan@ti.com>
Fix for a dmabuf memory leak
Signed-off-by: Harinarayan Bhatta <harinarayan@ti.com>
Signed-off-by: Harinarayan Bhatta <harinarayan@ti.com>
Changes for reverse playback
Adapt the re-order buffer to send out frames in reverse order
when playing with negative rate.
Signed-off-by: Harinarayan Bhatta <harinarayan@ti.com>
Adapt the re-order buffer to send out frames in reverse order
when playing with negative rate.
Signed-off-by: Harinarayan Bhatta <harinarayan@ti.com>
removed code that adds jpegparse to the pipeline
Instead increased the priority of jpegparse element.
Signed-off-by: Harinarayan Bhatta <harinarayan@ti.com>
Instead increased the priority of jpegparse element.
Signed-off-by: Harinarayan Bhatta <harinarayan@ti.com>
Set GstBuffer flags for interlaced frames
Set the Top-Field-Fist, Repeat-First-Field flags for interlaced
content on gstreamer output buffers.
Signed-off-by: Harinarayan Bhatta <harinarayan@ti.com>
Set the Top-Field-Fist, Repeat-First-Field flags for interlaced
content on gstreamer output buffers.
Signed-off-by: Harinarayan Bhatta <harinarayan@ti.com>
Allocate buffers from downstream element
Due to setting "first_out_buffer" to true by default, this plugin
does not use buffers allocated by downstream peer element. Changing
this to allow for downstream elements such as VPE plugin to allocate
and supply buffers to the decoder.
Signed-off-by: Harinarayan Bhatta <harinarayan@ti.com>
Due to setting "first_out_buffer" to true by default, this plugin
does not use buffers allocated by downstream peer element. Changing
this to allow for downstream elements such as VPE plugin to allocate
and supply buffers to the decoder.
Signed-off-by: Harinarayan Bhatta <harinarayan@ti.com>
gst_buffer_make_metadata_writable is not needed
gst_buffer_make_metadata_writable is not needed, moreover it
creates a copy of the buffer, just gst_buffer_set_caps will set a
new caps on the buffer
Signed-off-by: Harinarayan Bhatta <harinarayan@ti.com>
gst_buffer_make_metadata_writable is not needed, moreover it
creates a copy of the buffer, just gst_buffer_set_caps will set a
new caps on the buffer
Signed-off-by: Harinarayan Bhatta <harinarayan@ti.com>
[FIX] Check for valid input ID and correct order of deletion
During the flush command, the inputID would not be valid, hence
the function call to get the dmabuf id would result in SIGSEGV
error. Added a check for the inputID before getting the fd.
Also, if the call to IPU Engine_close is done in the starting, the
access to params or dce related data results in SIGSEGV, hence moving
the call to Engine_close just before dce_deinit.
Signed-off-by: Amarinder Bindra <a-bindra@ti.com>
During the flush command, the inputID would not be valid, hence
the function call to get the dmabuf id would result in SIGSEGV
error. Added a check for the inputID before getting the fd.
Also, if the call to IPU Engine_close is done in the starting, the
access to params or dce related data results in SIGSEGV, hence moving
the call to Engine_close just before dce_deinit.
Signed-off-by: Amarinder Bindra <a-bindra@ti.com>
[FIX] Defer buffer lock till calling process
Fix for issue OMAPS00301600.
The output buffers need to be locked (pinned to tiler) before calling
VIDDEC3_process.
Earlier this call, dce_buf_lock, was getting called much earlier.
So, in case of an error scenario, the buffers were not being unlocked
as dce_buf_unlock was not getting called.
This patch fixes the issue by defering the locking call till
before calling VIDDEC3_process.
Signed-off-by: Pradeep Venkatasubbarao <pradeepv@ti.com>
Fix for issue OMAPS00301600.
The output buffers need to be locked (pinned to tiler) before calling
VIDDEC3_process.
Earlier this call, dce_buf_lock, was getting called much earlier.
So, in case of an error scenario, the buffers were not being unlocked
as dce_buf_unlock was not getting called.
This patch fixes the issue by defering the locking call till
before calling VIDDEC3_process.
Signed-off-by: Pradeep Venkatasubbarao <pradeepv@ti.com>
directory struct alignment with latest codecengine
Adapted the directory structures according to the latest
codecengine for including header files
Signed-off-by: Chandramohan C <chandramohan.c@ti.com>
Adapted the directory structures according to the latest
codecengine for including header files
Signed-off-by: Chandramohan C <chandramohan.c@ti.com>
dmabuffer usage added to gst ducati plugins as per IPC3.x
According to IPC3.x input and output buffers need to be passed as
dmabuffer fd and all the output buffers need to be lock/unlock
before and after process call.This patch is to add support to
dmabuf fd and lock/unlock mechanism.
Signed-off-by: Chandramohan <chandramohan.c@ti.com>
According to IPC3.x input and output buffers need to be passed as
dmabuffer fd and all the output buffers need to be lock/unlock
before and after process call.This patch is to add support to
dmabuf fd and lock/unlock mechanism.
Signed-off-by: Chandramohan <chandramohan.c@ti.com>
Compilation error fixed. Happened due to a typo
playbin2 uses ducati for MJPEG/JPEG playback
Bugs fixed:
- larger files (> 4K x 4k) will still use jpegdec
- smaller files will use ducati, though nowhere to be displayed
- putting a jpegparse explicitly will not affect operation
- mjpeg is played using ducati in playbin2
Bugs fixed:
- larger files (> 4K x 4k) will still use jpegdec
- smaller files will use ducati, though nowhere to be displayed
- putting a jpegparse explicitly will not affect operation
- mjpeg is played using ducati in playbin2
Revert "playbin2 uses ducatijpegdec to play mjpeg streams"
This reverts commit b0bba5e159710919a2579bd00ee4803137304096.
Signed-off-by: Subhajit Paul <subhajit_paul@ti.com>
This reverts commit b0bba5e159710919a2579bd00ee4803137304096.
Signed-off-by: Subhajit Paul <subhajit_paul@ti.com>
Added debug statements to display codec version and VIDDEC3 calls
playbin2 uses ducatijpegdec to play mjpeg streams
jpegdec and ducatijpegdec both were ranked primary in the
plugin registry. increasing the rank of ducatijpegdec by one
will make it the default plugin for playing JPEG and MJPEG
streams
jpegdec and ducatijpegdec both were ranked primary in the
plugin registry. increasing the rank of ducatijpegdec by one
will make it the default plugin for playing JPEG and MJPEG
streams
10 years agoducatih264dec.c : Changed displayDelay to IVIDDEC3_DISPLAY_DELAY_AUTO from IVIDDEC3_D...
ducatih264dec.c : Changed displayDelay to IVIDDEC3_DISPLAY_DELAY_AUTO from IVIDDEC3_DECODE_ORDER
ducatimpeg2dec: disable manual reordering
I have found a video where we get ordered timestamps but out of
order frames. Until some method of working out the real ordering
of frames by looking inside the frames data, let's disable this.
I have found a video where we get ordered timestamps but out of
order frames. Until some method of working out the real ordering
of frames by looking inside the frames data, let's disable this.
ducatividdec: move latency query from ducatih264dec
It will be of use to all codecs that can delay frames when
doing reordering.
It will be of use to all codecs that can delay frames when
doing reordering.
DEBIAN: debianization
ducatijpegdec: add jpeg decoder error strings
ducatijpegdec: fix description, this MJPEG, not MPEG-2
Removed a duplicate script
Removed redundant definitions in h264enc fields
ducatih264enc is now using ih264enc.h from ducati side, rather than re-defining enums
ducatimpeg4enc is now using impeg4enc.h from ducati side, rather than re-defining enums
Removed elements for codecs not available in ducati firmware: VP6, VP7 and RealVideo
ducativp6dec, ducativp7dec and ducatirvdec are not functional
ducativp6dec, ducativp7dec and ducatirvdec are not functional
Added a tool to process GST traces and provide latencies for each element
Added a playback script, to exercise the endurance of gst-ducati
ducatividenc: use GST_PERFORMANCE category for traces related to profiling
Realigned code on new Ducati header files
Added a tool to process GST traces and provide latencies for each element
ducatividenc: use GST_PERFORMANCE category for traces related to profiling
jpegvdec: set numOutputDataUnits = 1 to please the codec
Add ducatijpegdec
ducatimpeg4dec: add MPEG4 decoder error strings
ducatih264dec: write out a MB error map when codec debug info is on
ducativc1dec: lie about simple profile videos being main profile
This fixes playback of at least one video claiming it's simple profile,
but containing frames that use a feature that are unavailable in
simple profile (intensity compensation).
As Ducati supports both main and simple profile, I don't *think* this
should have any adverse effect, but if there happens to be some profile
related issue in the future, this patch may be one to revert to see if
things improve.
This fixes playback of at least one video claiming it's simple profile,
but containing frames that use a feature that are unavailable in
simple profile (intensity compensation).
As Ducati supports both main and simple profile, I don't *think* this
should have any adverse effect, but if there happens to be some profile
related issue in the future, this patch may be one to revert to see if
things improve.
Mangle a few files with gst-indent, for future sanity
ducativc1dec: add VC1 error strings
ducatih264dec: add H264 decoder error strings
ducati: rework debug bit logging for extensibility
Codecs have their own "bit space", in which the same bits
represent different conditions.
Codecs have their own "bit space", in which the same bits
represent different conditions.
ducatih264dec: log basic MB error information when requested
ducatividdec: add a property for gathering debug info from the codec
The actual info is codec dependent. This is not done unconditionally
because it requires extra allocated memory, and potentially incurs
a speed penalty.
The actual info is codec dependent. This is not done unconditionally
because it requires extra allocated memory, and potentially incurs
a speed penalty.
ducativc1dec: move log where it will be displayed
Revert "h264dec: Actually do not accept level 5.1 in High profiles"
We had the confirmation that 5.1 HP is supported
This reverts commit bd0024c9af7016e897192e66bcb3c5717f9faf08.
We had the confirmation that 5.1 HP is supported
This reverts commit bd0024c9af7016e897192e66bcb3c5717f9faf08.
ducatividdec: remove another leftover -strided caps remnant
ducativc1dec: use const where appropriate
ducatividdec: print timestamp difference, not start timestamp
ducatih264enc: check dpb size calculation for negative values
It will happen if the required input parameters are unknown.
It will happen if the required input parameters are unknown.
ducatividdec: fix typo in log
ducatih264enc: add num-reorder-frames on caps
Since we know in advance how many frames will be required for
reordering, and since ducati doesn't seem to put that information
in the stream, we can set it in caps to tell the decoder it
doesn't have to use a conservative high bound that will most
likely be way too much.
Since we know in advance how many frames will be required for
reordering, and since ducati doesn't seem to put that information
in the stream, we can set it in caps to tell the decoder it
doesn't have to use a conservative high bound that will most
likely be way too much.
ducatividenc/ducatividdec: time VIDENC/VIDDEC call time in ms
Makes it easier to read than ns, and the encoder was missing it.
Makes it easier to read than ns, and the encoder was missing it.
ducatividdec: remove -strided caps remnants
ducatividenc: add ordering info to encoded buffers
Since we know about the ordering, doing so lets us avoid
needing a parser fill this in (if we have a parser that
can do it in the first place).
Since we know about the ordering, doing so lets us avoid
needing a parser fill this in (if we have a parser that
can do it in the first place).
ducatividenc: properly timestamp frames to cater for B frames
This relies on an assumption about the codec which is explained
in a comment in the source.
This relies on an assumption about the codec which is explained
in a comment in the source.
ducatividdec: do not push all frames on IDR
h264parse now generates an ordering that doesn't reset on IDR frames,
so we do not need to do this, which breaks in some cases, and we now
always rely on the ordering information we get.
h264parse now generates an ordering that doesn't reset on IDR frames,
so we do not need to do this, which breaks in some cases, and we now
always rely on the ordering information we get.
ducatividenc: change default keyframe interval to 16
For some unclear reason, the ducati H264 encoder only accepts
some particular pairs of values for inter and intra intervals.
While 15 was working fine with no B frames, the default intra
interval does not like being used with 15, but accepts 16.
For some unclear reason, the ducati H264 encoder only accepts
some particular pairs of values for inter and intra intervals.
While 15 was working fine with no B frames, the default intra
interval does not like being used with 15, but accepts 16.
ducatih264enc: force inter-interval to 1 for low delay case
This is a setup requirement of the ducati encoder.
This is a setup requirement of the ducati encoder.
ducatih264enc: fix B frames being disabled
The dynparams also need overriding, or the settings in
params will get ignored.
The dynparams also need overriding, or the settings in
params will get ignored.
ducatividenc: change the "None" rate-preset value to "none", for consistency
ducatividenc: remove duplicate casts and assignments
ducatih264enc: override params after letting the base class set defaults
Make max-reorder-frames an actual max, not a default max
This is more user friendly, and more useful.
This is more user friendly, and more useful.