Commit graph

1342 commits

Author SHA1 Message Date
Jan Schmidt 8c00a359d0 avviddec: After draining frames, flush the libav decoder
Makes sure that there's really nothing stale left in the decoder
after draining.

https://bugzilla.gnome.org/show_bug.cgi?id=734661
2014-08-12 22:48:59 +10:00
Aleix Conchillo Flaqué 1307b31e1c avviddec: Don't lose frames on EOS
have_data is not propagated from gst_ffmpegviddec_video_frame to
gst_ffmpegviddec_frame. have_data is only set to 1 in
gst_ffmpegviddec_frame if a frame pointer is passed. However, this is
not true while draining, which means that have_data from libav will be
ignored.

https://bugzilla.gnome.org/show_bug.cgi?id=734608
2014-08-11 18:06:33 +03:00
Thibault Saunier dc1e69dbea avauddec: Bump the rank of avdec_aac so it is used by default
https://bugzilla.gnome.org/show_bug.cgi?id=676131
2014-08-06 13:26:37 +02:00
Sebastian Dröge e42cc96566 avvidenc: Make sure to fixate caps before setting them on the pad
After the recent addition of negotiation support for MPEG4 part 2
profiles via caps it can happen that the generated caps at this
point still contain multiple profiles. For example if downstream
does not care. Just fixate anything here and use those caps.
2014-06-21 18:29:32 +02:00
Wim Taymans 57b1970395 avcodecmap: place supported profiles in mpeg4 caps
Place the supported profiles in the srcpad caps of the mpeg4 encoder.
2014-06-06 16:54:06 +02:00
Wim Taymans 9d0e1ecedc avcodecmap: remove deprecated media types
Remove x-xvid and x-3ivx. The last place where they were used are
in the srcpad caps of the decoder but since the decoder will never
actually output those caps we can safely remove them.
2014-06-06 16:54:06 +02:00
Wim Taymans df8674f6c3 codecmap: don't expose more deprecated media types
x-xvid is deprecated, we don't want to expose it on the encoder, just
leave it only exposed on the decoder.
2014-06-06 16:54:06 +02:00
Wim Taymans fd7ba73304 Revert "avcodecmap: do more reverse mapping of MPEG4"
This reverts commit e066785ad0.

x-xvid and x-3ivx are removed, we don't want to expose them again.
2014-06-06 16:54:06 +02:00
Vincent Penquerc'h 10e0606491 avaudenc: add a comment about using -1 in _finish_frame
See https://bugzilla.gnome.org/show_bug.cgi?id=729268
2014-06-06 12:40:57 +01:00
Vincent Penquerc'h 17e2e9acd9 avaudenc: avoid using wrong number of samples
If audio_in is NULL, we'll send a NULL frame to libav, to flush
the codec. In that case, we won't know how many samples the codec
will have used, so we use -1 (for don't know) when letting the
base class know about the buffer.

Coverity 1195177
2014-06-06 12:29:54 +01:00
Sebastian Dröge 406d5ba04a avvidenc: Fix indention and "bracketing" of goto labels
Should fix CID 1219865, which looks like the code analysis
algorithm was just confused.
2014-06-02 09:27:17 +02:00
Wim Taymans 2ef3c94b82 avcodecmap: handle simple and advanced-simple profile in MPEG4
Always enable 4MV flag for MPEG4
Pare the profile property and enable more features for advanced-simple
profile.
video/x-xvid is advanced-simple profile so enable more features.
We now also support encoding of video/x-xvid so add this to the caps.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=651320
2014-05-29 18:24:20 +02:00
Wim Taymans 3dda75f493 avvidenc: do all negotiation before opening the decoder
We first want to complete negotiation before opening the encoder.
Negotiation might configure flags and other things that might be needed
when opening the encoder.
2014-05-29 18:16:42 +02:00
Wim Taymans e066785ad0 avcodecmap: do more reverse mapping of MPEG4
We previously mapped some caps to MPEG4 and codec_tag so we can use the
codec_tag again to map to the original caps.
2014-05-29 17:00:23 +02:00
Thiago Santos 66588ae60d avdemux: use GstFlowCombiner
To remove replicated code from all demuxers to a single standard way
of aggregating flow returns
2014-05-26 16:04:50 -03:00
Thiago Santos 5872891711 avdemux: remove legacy check from pad-alloc times
The 'no_buffer' error case is from the 0.10 era when a pad_alloc was
made before decoding the data and avdemuxer could check again the
flow returns for a not-linked. This isn't a valid use case anymore in
1.0
2014-05-26 16:02:11 -03:00
Gavin Hurlbut 38fc56e207 avvidenc: Add thread-count parameter for libav encoders
As some libav encoders (such as MPEG2) use a thread_count parameter to control
how many threads to use, and since it was always being set to 0 (which uses
the default), suboptimal threading can sometimes be chosen.  This extends the
libav encoders to allow for a max-threads parameter which is passed into
the internal structure to control this knob if applicable to the encoder.

https://bugzilla.gnome.org/show_bug.cgi?id=726612
2014-05-19 15:07:02 +01:00
Mathieu Duponchelle 7bb4f93de9 gstavviddec: Sanitize and fix qos handling.
gst_video_decoder_get_max_decding_time doesn't return a GstClockTime
but a GstClockTimeDiff, and thus one needs to compare it against
G_MAXINT_64.

The returning of a boolean and the extra subsequent code in _video_frame
was uselessly complicated.

The previous behaviour led to artefacts when the decoder tried to
hurry up.

https://bugzilla.gnome.org/show_bug.cgi?id=730075
2014-05-16 13:51:50 +02:00
Nicolas Dufresne 62a4d065ed videodec: Don't use non-growable pool
As we don't know how many output buffers we need to operate, we need to
avoid pool that can't grow. Otherwise the pipeline may stall, waiting
for buffers. For now, we require it to be able to grow to at least
32 buffers, which I think is a fair amount of buffers for decoders.

https://bugzilla.gnome.org/show_bug.cgi?id=726299
2014-05-08 15:33:39 -04:00
Vincent Penquerc'h 4f1fd2687d libav: avoid dividing by zero on insane fps/par
While there, fix mixup in num/den with par (copied from fps,
apparently, and fps inverts fps to time base).

Coverity 1139696
2014-04-30 18:18:50 +01:00
Vincent Penquerc'h 3529de1784 avvidenc: guard against division by zero
and other nonsensical time base values while we're at it.

Coverity 1139699
2014-04-30 18:18:50 +01:00
Sebastian Dröge 6d92f18d1b avaudenc: Fix leak of AVBufferRef
AVPacket contains AVBufferRef which may leak unless unreffed properly.

https://bugzilla.gnome.org/show_bug.cgi?id=726814
2014-04-29 09:13:44 +02:00
Stian Selnes 245be56510 avvidenc: Fix leak of AVBufferRef
AVPacket contains AVBufferRef which may leak unless unreffed properly.

https://bugzilla.gnome.org/show_bug.cgi?id=726814
2014-04-29 09:07:33 +02:00
Edward Hervey 3a81f604fe avaudenc: Fix compile without gst debug
We can just re-use the encoder variable
2014-04-14 13:37:02 +02:00
Edward Hervey f70f904210 avdemux: Remove unused variable
CID #1139943
2014-04-08 08:05:24 +02:00
Edward Hervey e513fad054 codecmap: Add missing break
CID #1139752
2014-04-08 08:00:55 +02:00
Sebastian Dröge 99ca91f3a3 avcodecmap: Add mapping for Apple Intermediate Codec
https://bugzilla.gnome.org/show_bug.cgi?id=727673
2014-04-06 09:05:43 +02:00
Mark Nauwelaerts 6daa80bbbe avvidenc: discard input frame upon encoding error 2014-03-25 21:06:01 +01:00
Mark Nauwelaerts 7a8eae6ea9 avvidenc: make all properties work again
... as previously broken due to additional compliance property
(see 13ffed87b1).
2014-02-23 11:40:14 +01:00
Mark Nauwelaerts fef710efc3 avmux: stream-start and segment event before data-flow 2014-02-22 21:54:08 +01:00
Thijs Vermeir 9a1c9096dc avviddec: rename hevc decoder element to h265 for consistency
We use h265 for the parser, typefinder, caps, etc. everywhere.

https://bugzilla.gnome.org/show_bug.cgi?id=724823
2014-02-22 16:10:49 +01:00
Tim-Philipp Müller 74b769751d avvidec: don't crash on EOS when no buffers have been received
Fixes crash on EOS when no buffers have been received for some
reason, e.g. because the parser didn't output any.

fakesrc num-buffers=0 format=time ! avdec_h264 ! fakesink
2014-02-21 13:18:47 +00:00
Thiago Santos 845b874575 avaudenc: fix audio encoder flushing according to libav docs
* @param[in] frame AVFrame containing the raw audio data to be encoded.
 *                  May be NULL when flushing an encoder that has the
 *                  CODEC_CAP_DELAY capability set.

The AVFrame itself should be null, not the frame.data pointer

https://bugzilla.gnome.org/show_bug.cgi?id=724536
2014-02-20 17:32:12 -03:00
Dmitry Melnichenko fe224775cf avmux: Fix invalid address passing to av_opt_set_int()
https://bugzilla.gnome.org/show_bug.cgi?id=723615
2014-02-04 17:28:36 +01:00
Mark Nauwelaerts f86fd7e29e avvidenc: avoid busy-looping when flushing frames
... such as when receiving EOS event.
2014-02-01 14:40:45 +01:00
Sjoerd Simons 1b5895c936 avdemux: Don't go into pull mode when the sequential flag is set
When the scheduling query results has GST_SCHEDULING_FLAG_SEQUENTIAL set
in its flags don't go into pull mode to prevent over-eager seeking.

https://bugzilla.gnome.org/show_bug.cgi?id=722935
2014-01-24 22:22:48 +01:00
Tim 'mithro' Ansell 520221c47a avmux: Force DV audio input format to 48kHz, 2 channels
libavformat only supports muxing 16bit, 48kHz stereo into DV containers.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=722672
2014-01-21 13:22:40 +01:00
Aleix Conchillo Flaqué 60f7b00db3 avviddec: Add output-corrupt property
The output-corrupt property will set the CODEC_FLAG_OUTPUT_CORRUPT flag
in the codec context. The user can now decide whether libav outputs
corrupt frames or not.

Previous libav versions had this flag always set.

https://bugzilla.gnome.org/show_bug.cgi?id=722453
2014-01-17 22:08:33 +01:00
Sebastian Dröge d494f6f983 avauddec: Mark frames as corrupted if libav tells us they are
This is currently only implemented by the h264 codec and no audio codec.

https://bugzilla.gnome.org/show_bug.cgi?id=722290
2014-01-16 13:46:26 +01:00
Sebastian Dröge b278ca55be avviddec: Mark frames as corrupted if libav tells us they are
This is currently only implemented by the h264 codec.

https://bugzilla.gnome.org/show_bug.cgi?id=722290
2014-01-16 13:46:26 +01:00
Vincent Penquerc'h ca1b5d8576 gst-libav: fix context leaks
A AVCodecContext needs cleaning up before being freed.
Go through all of the allocations/setups to ensure none of them
can leak a context or its contents.
2014-01-15 09:02:33 +00:00
Wim Taymans ead14945aa avviddec: set output chroma-site
Use libav provided chroma-site and place it on the output caps.
2014-01-13 16:31:05 +01:00
Wim Taymans 81cef109e2 avviddec: release buffers when not direct rendering
New libav will not call the release_buffer callback anymore when
avcodec_default_get_buffer() is called from get_buffer. Releasing of the
memory in a picture should now be done by registering a callback to the
avbuffer objects in the picture. There is some compatibility code to
wrap the memory we provide in get_buffer in avbuffer with a callback to
release_buffer but that is not done when avcodec_default_get_buffer()
is called.

Work around this by adding a dummy avbuffer object to the picture that
will release the frame.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=721077
2014-01-10 17:28:22 +01:00
Sebastian Dröge 1e65aac1a4 avauddec: Give MP3 decoder a MARGINAL rank too
There's no reason why this decoder should not be autoplugged
2014-01-10 13:17:02 +01:00
Sebastian Dröge 9887521a32 av: Enable HEVC / h265 support 2014-01-06 13:39:32 +01:00
Tim-Philipp Müller 8770f22735 avcodecmap: fix regression with wmv3 video in WMVA format
The VC-1 decoder should handle that. Before avdec_wmv3 handled
it, but then we added format=WMV3 to its sink pad template
caps, at which point nothing handled WMVA any longer.

https://bugzilla.gnome.org/show_bug.cgi?id=697665
2014-01-03 16:00:41 +00:00
Sebastian Dröge 1409e1692b av: Update for CodecID -> AVCodecID related changes 2014-01-03 16:28:44 +01:00
Sebastian Dröge fc57f7fb1b avcfg: Update config parameters a bit to fix compilation
This needs a major rework and should use the new configuration
interface where useful.
2014-01-03 16:28:02 +01:00
Sebastian Dröge 0a819702c0 avenc: Stop using the removed inter_threshold field 2014-01-03 16:27:34 +01:00
Sebastian Dröge 0400f7cc28 avviddec rebase 2014-01-03 16:27:11 +01:00
Sebastian Dröge 8fc3da62c1 avauddec: Stop using AVCODEC_MAX_AUDIO_FRAME_SIZE
And properly use the have_data variable. It's a boolean.
2014-01-03 16:26:10 +01:00
Sebastian Dröge 28d1c135bb avdemux: Stop using r_frame_rate field
It was removed and quite meaningless anyway.
Use the average framerate instead.
2014-01-03 16:25:39 +01:00
Sebastian Dröge 53966ee304 avvidenc: Port to av_encode_video2()
av_encode_video() is deprecated and an ugly API anyway.
2014-01-03 16:24:28 +01:00
Todd Agulnick 4cc981de37 Some compiler warning fixes to satisfy XCode compiler
https://bugzilla.gnome.org/show_bug.cgi?id=720513
2013-12-16 16:54:21 +01:00
Mark Nauwelaerts 47d5c2b6d6 avviddec: improve buffer handling and semantics
... so as to focus on providing *a* buffer rather than one (too) tied
to a frame, in particular allowing multiple allocations related to a frame.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=697806
2013-12-07 12:11:34 +01:00
Mark Nauwelaerts 1aa253cd3b avvidenc: plug input_state leak 2013-12-07 12:11:03 +01:00
Sebastian Dröge 423d9dcd71 avviddec: Use new gst_video_decoder_set_needs_format() API 2013-12-05 11:51:27 +01:00
Mark Nauwelaerts 039b608b24 avviddec: only use upstream framerate if really specified
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=704161
2013-12-02 20:21:34 +01:00
Mark Nauwelaerts fa5865c0cd avviddec: discard unused input frames
... to avoid these piling up in list of pending frames.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=693772
2013-11-26 20:57:37 +01:00
Mark Nauwelaerts 2ec4008ea5 avviddec: really release frame at proper time
... by also removing it from the pending list of frames,
where it may still be in if it has never been submitted to _finish.
This could happen if is a decode-only frame, or in skipped decoding
situation, ...

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=693772
2013-11-26 20:55:43 +01:00
Tim-Philipp Müller 4072c40b8e avaudec: don't put bogus 0 channel-mask on output caps for mono audio 2013-11-04 23:20:17 +00:00
Tim-Philipp Müller e9e31ebada avaudenc: post better error message if experimental codecs don't work
https://bugzilla.gnome.org/show_bug.cgi?id=691617
2013-10-26 09:34:30 +01:00
Tim-Philipp Müller 49d0c480ae codecmap: use TRUE for boolean fields in caps 2013-10-26 09:10:03 +01:00
Greg Rutz 13ffed87b1 avenc: Add compliance property
Add a new property to GstFFMpegVidEnc and GstFFMpegAudEnc to supply
the "strict compliance" value to AVCodecContext

https://bugzilla.gnome.org/show_bug.cgi?id=691617
2013-10-15 09:27:03 +02:00
Matthieu Bouron 4c93bffb21 avcodecmap: Make avdec_mjpeg requires a parsed input
Actually avdec_mjpeg does not deal well with incomplete buffers and try
to decode incomplete frames. A parser which will also acts as
an accumulator needs to be inserted before it.

https://bugzilla.gnome.org/show_bug.cgi?id=709352
2013-10-04 10:34:25 +02:00
Sebastian Dröge 5b76550168 avcodecmap: gst_value_can_intersect() does not do what you would think
Check for uniqueness differently now.
2013-10-02 13:59:04 +02:00
Sebastian Dröge 3e154333de avcodecmap: Only append values to the video/audio format lists if we don't have them already 2013-10-02 12:57:36 +02:00
Sebastian Dröge 3c77754524 avviddec: Reset some more fields in ::stop() 2013-10-02 12:52:35 +02:00
Sebastian Dröge 5f5b6f465c avviddec: Don't believe we're negotiated if negotiation failed
It can happen that negotiation fails during get_buffer(), but then
we don't retry later and never return NOT_NEGOTIATED upstream...
and instead run into assertions.
2013-10-02 12:52:11 +02:00
Sebastian Dröge 9febec71c0 avauddec: Don't believe we're negotiated if negotiation failed
It can happen that negotiation fails during get_buffer(), but then
we don't retry later and never return NOT_NEGOTIATED upstream...
and instead run into assertions.

https://bugzilla.gnome.org/show_bug.cgi?id=708769
2013-10-02 12:52:01 +02:00
Sebastian Dröge 9becd72b60 avenc: Choose 25 fps if we don't have any in the caps
Some encoders require a non-zero framerate to be configured properly
and just choosing something will make them not fail completely at
least.

https://bugzilla.gnome.org/show_bug.cgi?id=708732
2013-10-01 22:38:32 +02:00
Sebastian Dröge 2daefd69b8 avcodecmap: Fix boolean expression to fix uninitialized usage of variables 2013-09-28 20:39:15 +02:00
Sebastian Dröge 677eaa6692 avviddec: Initialize strides with the ones of avcodec_default_get_buffer() if we ever call it
https://bugzilla.gnome.org/show_bug.cgi?id=704769
2013-09-12 13:57:41 +02:00
Sebastian Dröge 1277540b8c avviddec: Use the correct context for negotiation
During get_buffer() it can happen that the main context is not
updated yet and only the context passed here has the correct
width, height, etc.
2013-09-12 12:12:23 +02:00
Sebastian Dröge faec0142e3 avviddec: Remember initially used stride and don't allow stride changes
libav does not allow stride changes currently, fall back to
non-direct rendering here:
https://bugzilla.gnome.org/show_bug.cgi?id=704769
https://bugzilla.libav.org/show_bug.cgi?id=556
2013-09-12 12:11:29 +02:00
Matej Knopp 94875a34d4 avcodecmap: Add support for TechSmith Screen Capture 2
https://bugzilla.gnome.org/show_bug.cgi?id=707878
2013-09-11 11:04:42 +02:00
Alex Ashley 61153a5ac2 avcodecmap: exclude avc3 stream format from AV_CODEC_ID_H264
As part of the changes to support the "avc3" variant of the ISO-BMFF
(see bug #702004) a new stream-format has been created
(video/x-h264, stream-format="avc3", alignment="au") that requires
changes to gstavcodecmap to exclude this format because avdec_h264
expects the SPS and PPS to be in the codec_data.

Amendment 2 of ISO/IEC 14496-15 (AVC file format) is defining a new
structure for fragmented MP4 called "avc3". The principal difference
between AVC1 and AVC3 is the location of the codec initialisation data
(e.g. SPS, PPS). In AVC1 this data is placed in the initial MOOV box
(moov.trak.mdia.minf.stbl.stsd.avc1) but in AVC3 this data goes in the
first sample of every fragment.

https://bugzilla.gnome.org/show_bug.cgi?id=702004
2013-09-04 13:34:00 +02:00
Josep Torra 690ca42e6e codecmap: add mapping for MSS1 and MSS2
Windows Media Video Screen (WMV Screen) are video formats that
specilise in screencast content.
2013-08-30 15:00:30 +02:00
Sebastian Dröge 6571196fb8 libav: avcodec_close() also resets fields like the AVCodec
We need to reload the defaults for the codec after closing it,
otherwise we can't access codec information like the supported
sample rates and can crash.

https://bugzilla.gnome.org/show_bug.cgi?id=707040
2013-08-29 16:53:28 +02:00
Sebastian Dröge 966b53109b avdemux: Add support for video/x-pva
https://bugzilla.gnome.org/show_bug.cgi?id=158719
2013-08-22 14:23:43 +02:00
Tim-Philipp Müller ffe85cb0ef avvidenc: propagate flow return values upstream in finish() 2013-08-21 13:47:15 +01:00
Sebastian Dröge ae946bab1c libav: Use new flush vfunc of video codec base classes and remove reset implementations 2013-08-15 15:51:52 +02:00
Hans de Goede 3d628e5676 avmux: Don't fail on commas in the libav muxer type names
https://bugzilla.gnome.org/show_bug.cgi?id=697512
2013-08-13 12:49:54 +02:00
Sebastian Dröge 461a46f17a avdemux: Implement SEGMENT query 2013-07-29 12:19:38 +02:00
Edward Hervey b1dccb17e9 avcodecmap: Demote WARNING to DEBUG
We cover all the needed formats already. The warning was just getting
in the way.
2013-07-24 12:22:04 +02:00
Olivier Crête 2556cb325a avviddec: Initialise opaque from the start
https://bugzilla.gnome.org/show_bug.cgi?id=693581
2013-07-23 14:01:32 +02:00
Sebastian Dröge 9b2577ea2b avdemux: Add support for group-id in the stream-start event 2013-07-23 09:59:43 +02:00
Arnaud Vrac 4a2054c6aa avviddec: increase bottom padding for output frames
libav can write slightly after the plane end in some SIMD optimized
functions. The extra padding value needs to be at least 16+stride_align
for each plane, so just increase the bottom padding value for the output
frame.

https://bugzilla.gnome.org/show_bug.cgi?id=694299
2013-07-18 16:24:18 +02:00
Wim Taymans 5736513eb0 codecmap: realvideo does not have systemstream property
realvideo does not have the systemstream property and nobody ever sets it so
better remove it here to make it link to something else.
2013-06-25 14:03:07 +02:00
Thiago Santos dce9d85695 avviddec: reset coded_width/_height before trying to open codec
If coded_width/_height is supplied, the codec might use it as the
width/height and if it is wrong can lead to segfaults or video
corruption.

This is specially harmful on renegotiation scenarios where the
resolution changed. There seems to be no specific function for reseting
the AV Context in libav, so just set it directly.

https://bugzilla.gnome.org/show_bug.cgi?id=702003
2013-06-11 09:00:49 -03:00
Tim-Philipp Müller 068be939cb CODEC_ID_* -> AV_CODEC_ID_* 2013-05-06 23:56:22 +01:00
Tim-Philipp Müller 4dd36df4f7 codecmap: add mapping for WMA Lossless
Only 16 bits is supported for now though.
2013-05-06 23:53:01 +01:00
Sebastian Dröge 2d2c9b1aac avviddec: Enable FRAME based threaded decoding if upstream is not live
If upstream is live we don't want FRAME based threaded decoding as
it adds latency.
2013-04-23 14:20:42 +02:00
Andoni Morales Alastruey d3b125913f libav: fix static linking 2013-04-15 16:00:03 +02:00
Sebastian Dröge 1caa7d6161 gst: Add better support for static plugins 2013-04-15 16:00:02 +02:00
Matej Knopp 710c92d830 av: Add WMV3 format for WMV 3 caps 2013-04-15 12:42:01 +02:00
Siva Chandran P 758d7bf7ea avvidec: Make sure to store newly set caps after resetting the decoder
Otherwise we'll just set the to NULL while resetting the decoder and
don't have them available anymore later.

https://bugzilla.gnome.org/show_bug.cgi?id=697548
2013-04-09 20:44:23 +02:00
David Schleef f656d9eaf7 Use %03u instead of %u in gst_pad_create_stream_id_printf() 2013-03-25 19:01:31 -07:00
Olivier Crête 597bf61ae7 swscale: Use 1.0-style video/x-raw caps 2013-03-01 15:11:15 -05:00
David Schleef 7f2f2fb31f Add mapping for SMPTE 302m audio 2013-02-04 18:10:42 -08:00
Tim-Philipp Müller b7ef1faab7 Revert "avdec_aac: disable for autoplugging until it gets fixed"
This reverts commit c5980dc52a.

It's fixed now.

https://bugzilla.gnome.org/show_bug.cgi?id=690940
2013-01-26 12:52:29 +00:00
Tim-Philipp Müller 879cd02e26 avauddec: fix decoding of mono audio as well
https://bugzilla.gnome.org/show_bug.cgi?id=690940
2013-01-26 12:52:29 +00:00
Nicolas Dufresne 76423a4ba7 avauddec: fix garbled audio decoding in some cases
Calculate output buffer size based on the number of
samples, channels and bytes per sample. The buffer
size was calculated based on linesize, which may
be larger than what's required.

https://bugzilla.gnome.org/show_bug.cgi?id=690940
2013-01-26 12:23:14 +00:00
Tim-Philipp Müller ed6561bee6 avenc_aac: downgrade to RANK_NONE until it gets fixed
Currently just fails to initialize.

https://bugzilla.gnome.org/show_bug.cgi?id=691617
2013-01-22 12:57:41 +00:00
Tim-Philipp Müller c5980dc52a avdec_aac: disable for autoplugging until it gets fixed
Currently outputs garbled audio. Use faad in the meantime.

https://bugzilla.gnome.org/show_bug.cgi?id=690940
2013-01-22 12:53:48 +00:00
Tim-Philipp Müller 3ad2d0b0e7 Disable libswscale/avvideoscale plugin until it works at least somewhat
It needs some fixing.
2013-01-17 23:57:00 +00:00
Sebastian Dröge 4221ae1022 av: Remove some unused variables and function declarations 2012-12-22 10:52:47 +01:00
Sebastian Dröge 08ca549627 av: Move gst_ffmpegdata functions to gstavprotocol.h too
Just for consistency.
2012-12-22 10:49:52 +01:00
Thijs Vermeir bdd7406bc4 av: Fix redefinition of typedef 'GstFFMpegPipe'
Move declaration of pipe function to correct headers file
2012-12-21 23:16:44 +01:00
Sebastian Dröge adfdfebc8c av: Use correct printf format strings for gsize 2012-12-21 11:03:27 +01:00
Sebastian Dröge 022ab84288 av: Fix some memory leaks and misuse of libav API 2012-12-17 16:35:36 +01:00
Sebastian Dröge d69dda0391 avauddec: Use a GstBuffer instead of a GstAdapter for collecting the output buffers
This might cause less memcpies as the GstMemories of the buffers
are just appended into a single buffer.
2012-12-17 15:58:37 +01:00
Thiago Santos c445b614f9 avauddec: accumulate buffers from a single input to push it all at once
The base audio decoder wants a 1:1 mapping for input and output
buffers, so this decoder must accumulate data in an adapter and push
it all at once after all input has been processed.

https://bugzilla.gnome.org/show_bug.cgi?id=689565
2012-12-17 15:56:03 +01:00
Sebastian Dröge faf985e8fb avcodecmap: Only set "formats" field on raw audio/video caps 2012-12-17 13:42:13 +01:00
Sebastian Dröge 0ec5fea211 avcodecmap: Correctly convert GStreamer channel positions to libav channel mask 2012-12-17 13:41:42 +01:00
Sebastian Dröge a6ede95de7 avcodecmap: Add more and correct restrictions for DV
https://bugzilla.gnome.org/show_bug.cgi?id=600895
2012-12-17 11:11:12 +01:00
Sebastian Dröge 959d9ce553 libav: Fix some compilation errors caused by circular includes 2012-12-12 17:36:33 +00:00
Wim Taymans 60ff639cd4 avcodec: set bits_per_coded_sample for G726
Use the bitrate and the samplerate to set the bits_per_coded_sample for G726
because the decoder needs this.
2012-12-12 17:04:00 +01:00
Sebastian Dröge 3837abb264 avauddec: Set frame defaults for the audio decoders too 2012-12-12 15:57:19 +00:00
Sebastian Dröge 7a36bbb873 avcodecmap: Remove some unused functions 2012-12-12 15:54:01 +00:00
Wim Taymans b333e1204e avaudenc: init frame with defaults
Init the AVFrame with the right method. This sets the extended_data field
correctly that is needed for some formats (G726 for example).
2012-12-12 16:47:19 +01:00
Sebastian Dröge 21ac746f33 avdec: Improve src template caps 2012-12-12 15:42:09 +00:00
Sebastian Dröge cb9e40ff4c avaudenc: Properly handle planar audio formats with more than AV_NUM_DATA_POINTERS channels 2012-12-12 13:04:54 +00:00
Sebastian Dröge 1bec18edce avauddec: Properly handle planar audio formats with more than AV_NUM_DATA_POINTERS channels 2012-12-12 13:04:38 +00:00
Christiaan Welvaart 338b147374 avprotocol: Port from the URL protocol handler to saner public API 2012-12-12 12:10:27 +00:00
Wim Taymans 4c46f11d5f libav: fix palette support again 2012-12-12 10:12:22 +01:00
Sebastian Dröge 736bda7350 avcodecmap: Take framerate restrictions into account for encoders 2012-12-11 18:56:24 +00:00
Sebastian Dröge 86361bf6df avvidenc: Simplify color formats in the raw video caps 2012-12-11 18:48:34 +00:00
Sebastian Dröge fbe1221d70 avaudenc: Reorder audio channels if necessary and add proper support for channel layouts 2012-12-11 18:07:34 +00:00
Sebastian Dröge 64a2a8bdae avcodecmap: Take channel layout constraints into account if possible 2012-12-11 17:25:41 +00:00
Sebastian Dröge b9d0c7110f avcodecmap: Take generic samplerate limitations into account 2012-12-11 16:54:09 +00:00
Sebastian Dröge 90e1c0c21d avcodecmap: Simplify raw audio caps 2012-12-11 16:46:43 +00:00
Sebastian Dröge 9945ae7adc avauddec: Close context when it was opened 2012-12-11 15:14:10 +00:00
Sebastian Dröge 06de84c747 avviddec: Fix memory leak if we already allocated an output buffer for the frame 2012-12-11 10:34:42 +00:00
Wim Taymans 76b8b8c67f Revert "avviddec: Fix memory leaks and assertions in error cases if we can't allocate a frame"
This reverts commit 47647e1cac.

Breaks playback when direct rendering is disabled.
The reason is that we set the opaque vaue to NULL and then try to use the NULL
value when we decoded a frame.
2012-12-11 10:24:08 +01:00
Rasmus Rohde 4fc452344a Fix incorrect use of object in log statement. We are given a pointer to the object and should not try to take the address of it. 2012-12-10 15:35:16 +01:00
Руслан Ижбулатов b7471c1f5b avutils: Add missing includes for Windows
Fixes #689751
2012-12-06 10:45:58 +01:00
Sebastian Dröge cab519f370 avaudenc: Add support for planar audio formats 2012-12-05 19:28:33 +01:00
Sebastian Dröge 2d7ebf9514 av: Correctly populate the codec context with the defaults 2012-12-05 19:25:37 +01:00
Sebastian Dröge d840211412 av: Use av_codec_is_{en,de}coder() API instead of private struct fields 2012-12-05 10:52:34 +01:00
Sebastian Dröge aa4a238506 avauddec: release_buffer is not supposed to be used for audio
And calling it causes crashes in some situations.
2012-12-04 22:09:05 +01:00
Sebastian Dröge e092f3d411 avauddec: Add support for planar audio formats 2012-12-04 20:45:28 +01:00
Sebastian Dröge 47647e1cac avviddec: Fix memory leaks and assertions in error cases if we can't allocate a frame 2012-12-04 20:44:58 +01:00
Sebastian Dröge f5c112990f av: Port remaining simple bits 2012-12-04 18:36:56 +01:00
Sebastian Dröge 0f206124b6 av: Remove palette support for now
It was never ported to the way how paletted color formats work
in 1.0 anyway and the API changed in libav upstream.
2012-12-04 18:36:37 +01:00
Sebastian Dröge 169825a28e av: Update for some constant changes 2012-12-04 18:36:37 +01:00
Sebastian Dröge 06ed3e4060 av: Port to new avio protocol handler 2012-12-04 18:36:37 +01:00
Luca Barbato 5f03a7d869 av: update to use AVOption variants. 2012-12-04 18:36:30 +01:00
Tim-Philipp Müller 5a823a5fbf avaudenc: log error string as well in debug output 2012-12-02 12:31:43 +00:00
Tim-Philipp Müller a3d930afbe avaudenc: use sample rate as ticks per second fallback
The 25/1 value presumably came from the video encoder class.
2012-12-01 23:21:41 +00:00
Tim-Philipp Müller 819d4d2a04 avaudenc: fix output timestamping
We need to pass the number of samples encode in the output buffer
to gst_audio_encoder_finish_frame(), not the number of frames.
Fixes output timestamps being way too small, and transcoding
problems.

https://bugzilla.gnome.org/show_bug.cgi?id=689398
2012-12-01 23:05:23 +00:00
Sebastian Dröge 4132a73f0e avvidenc: Implement reset vfunc 2012-11-20 11:56:57 +01:00
Sebastian Dröge d3f8c5f0cc avvidenc: Don't send any frames downstream when draining unless requested to do so 2012-11-20 11:53:52 +01:00
Sebastian Dröge 5ffd21f1ee avaudenc: Implement draining 2012-11-20 11:51:13 +01:00
Sebastian Dröge e281493f29 avaudenc: Implement flush vfunc properly 2012-11-20 11:45:34 +01:00
Sebastian Dröge 9456fb86c7 avauddec: Port to non-deprecated avcodec_decode_audio4() API
Fixes bug #666435.
2012-11-20 11:40:10 +01:00
Sebastian Dröge f4acd40767 avaudenc: Some minor cleanup 2012-11-20 10:55:55 +01:00
Sebastian Dröge 3ffbb6ff94 avaudenc: Use non-deprecated avcodec_encode_audio2() API
This also allows us to always get an output buffer of the required size
instead of risking that it is too small.
2012-11-20 10:53:01 +01:00
Sebastian Dröge 7a29cffc50 avaudenc: Port to audio encoder base class 2012-11-20 10:36:29 +01:00
Sebastian Dröge 970f40b935 avvidenc: Use gst_caps_truncate() 2012-11-20 10:35:01 +01:00
Sebastian Dröge 6895df72d6 av: Use PROP_ instead of ARG_ 2012-11-20 10:31:49 +01:00
Sebastian Dröge 0e13c75aea avcodecmap: Y41B is YUV411P, not YUV410P 2012-11-19 14:11:52 +01:00
Sebastian Dröge ef408ada57 avauddec: Port to audio base classes 2012-11-19 14:11:52 +01:00
Sebastian Dröge c784ec9fa5 av: Put declarations in header files and rename audio codec files 2012-11-19 10:30:37 +01:00
Tim-Philipp Müller 37ce97a6e0 gst_adapter_prev_timestamp -> gst_adapter_prev_pts 2012-11-14 12:45:56 +00:00
Sebastian Dröge 67e11c7ad9 avcodecmap: Add mappings for the GBR color formats 2012-11-10 22:23:23 +01:00
Tim-Philipp Müller d0ef33d463 Fix FSF address 2012-11-04 00:22:16 +00:00
Sebastian Dröge c9125dd6f0 avcodecmap: Remove redundant function to map PixelFormat to GstVideoFormat
And merge everything into a single one.
2012-10-29 14:12:03 +01:00
Sebastian Dröge 7eec659460 avdec: Use gst_audio_buffer_clip() instead of manual clipping 2012-10-25 14:07:21 +02:00
Tim-Philipp Müller 451a6c2ecf avvidenc: also skip non-video encoders
Doesn't actually make any difference at the moment, but
seems the right thing to do.

https://bugzilla.gnome.org/show_bug.cgi?id=685113
2012-09-30 16:25:29 +01:00
Alban Browaeys f1071cc1b1 avviddec: exclude non-video decoders
Otherwise audio decoders "ignored", ie blacklisted, end up
registered by avviddec as video decoders.

https://bugzilla.gnome.org/show_bug.cgi?id=685113
2012-09-30 16:24:18 +01:00
Tim-Philipp Müller 07cec6d216 avdemux: fix not-negotiated errors
Drop caps event received on the sink pad, instead of
putting it in the list of cached events to be sent
downstream later. We don't want to send our container
caps downstream to our decoders, that'll give us
nasty not-negotiated errors.

https://bugzilla.gnome.org/show_bug.cgi?id=680464
2012-09-28 16:53:49 +01:00
Sebastian Dröge f0d700d5ca avviddec: Correctly handle 0-sized buffers without crashing
Might e.g. be valid for Theora.
2012-09-27 12:20:30 +02:00
Tim-Philipp Müller 787bd57ea1 avviddec: don't try to set invalid latency
Avoids warnings when we don't know the latency.
2012-09-25 18:29:08 +01:00
Wim Taymans aafffb7665 avviddec: improve debug 2012-09-14 13:25:03 +02:00
Nicolas Dufresne 3ca45b8c45 viddec: Set latency base on the number of bframes 2012-09-13 15:48:26 +02:00
Nicolas Dufresne 1f74496b8a viddec: Cleanup unused has_b_frames flag 2012-09-13 15:48:22 +02:00
Edward Hervey 0f9cc8dac6 libav: Switch to non-deprecated symbols
This symbols/enums will all be deprecated in the next releases
2012-09-13 15:23:26 +02:00
Stefan Sauer 70471f230f collectpads: remove gst_collect_pads_add_pad_full
Rename gst_collect_pads_add_pad_full() to gst_collect_pads_add_pad() and fix all
invocations.
2012-09-12 21:15:24 +02:00
Michael Smith 01bb84a5eb libav: add decode support for prores
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=683840
2012-09-12 10:29:24 +02:00
Mark Nauwelaerts c5589bb8f9 avdemux: port to the new GLib thread API 2012-09-12 10:25:21 +02:00
Mark Nauwelaerts b9e32291a9 avdemux: only activate in pull mode if upstream is seekable 2012-09-11 17:52:57 +02:00
Wim Taymans 1e5bfa5215 avviddec: add support for codecs that use reget_buffer
Add support for codec that use reget_buffer. In this mode, it reuses the picture
and we need to attach the corresponding input frame to it or else we get the
timestamps wrong.
2012-09-11 13:53:23 +02:00
Edward Hervey 90a8b3fb9f ext: ffmpeg/gstffmpeg*.[ch] => libav/gstav*.[ch] 2012-09-10 17:53:54 +02:00
Edward Hervey f4532d9135 remove postproc element
libpostproc is gone from upstream libav.
2012-09-10 17:18:30 +02:00
Edward Hervey 0e40eb11bc configure.ac: Import top-level include directory
And fixup all includes
2012-09-10 17:08:00 +02:00
Edward Hervey 9f8e46d3d2 avdemux: Really ignore demuxers we want to ignore 2012-09-10 11:17:11 +02:00
Tim-Philipp Müller 22f67f7b9e viddec: blacklist *crystalhd* decoder wrappers
There are gstreamer crystalhd elements as well,
so shouldn't be a big loss.

https://bugzilla.gnome.org/show_bug.cgi?id=683435
2012-09-07 17:56:43 +01:00
Sjoerd Simons ed1ea6f097 ffmpegenc: Don't try to set caps to NULL
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=682736
2012-08-30 20:03:10 +02:00
Wim Taymans 4b62101f44 viddec: use the right pointers
Use the plane pointers and strides.
Improve some debug
2012-08-10 17:03:26 +02:00
Sebastian Dröge fe0a8d005d avviddec: Properly align and pad buffers for libav
https://bugzilla.gnome.org/show_bug.cgi?id=680796
2012-08-08 16:02:32 +02:00
Sebastian Dröge 3a4a139a28 av: Use */x-gst-av instead of */x-gst-ff for unknown caps 2012-08-07 10:19:16 +02:00
Sebastian Dröge 0764e9600c avdemux: Remove unused variable 2012-08-06 14:35:07 +02:00
Sebastian Dröge 1af5b5601d avdemux: Add stream-id to stream-start events 2012-08-06 14:05:28 +02:00
Edward Hervey 9b45987ef5 ffmpegviddec: Return NOT_NEGOTIATED when not configured 2012-08-06 11:55:31 +02:00
Tim-Philipp Müller 241419b46d gst_tag_list_free -> gst_tag_list_unref 2012-08-04 16:19:29 +01:00
Sebastian Dröge 3d2d1beb77 tag: Update for taglist/tag event API changes 2012-07-28 00:36:40 +02:00
Wim Taymans 3c47f584e2 avdec: require alignment=au for h264
Because we don't use a parser anymore we need to make sure that we feed the
decoder with full frames. For h264, require that we are aligned on access
units.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=680540
2012-07-25 11:55:21 +02:00
Tim-Philipp Müller 2d458ca951 audio encoders: use context default bitrate if no bitrate has been set
Fixes 'bitrate too low: got 0, need 24000 or higher'
error when doing audiotstsrc ! avenc_wmav1 ! fakesink

https://bugzilla.gnome.org/show_bug.cgi?id=680487

https://bugzilla.gnome.org/show_bug.cgi?id=680487
2012-07-23 23:29:26 +01:00
Mark Nauwelaerts 0489f5eb78 ffmpeg: avoid assertion failure on duplicate frame allocation 2012-07-23 15:02:11 +02:00