Sebastian Dröge
32addd9757
avaudenc/dec: Blacklist more PCM decoders/encoders
2017-04-13 15:23:45 +03:00
Arun Raghavan
a3b7aebf6b
avvidenc: Fix compiler errors in the previous commit
...
The declaration of 'const char *klass' was shadowing a function
argument.
2017-03-22 12:55:40 +05:30
Arun Raghavan
2e25f166fc
avvidenc: Classify image encoders with "Image" instead of "Video"
...
This allows gst_video_convert_sample*() to work with codecs for which we
have libav encoders (such as BMP).
https://bugzilla.gnome.org/show_bug.cgi?id=780317
2017-03-21 09:49:45 +05:30
Sebastian Dröge
fecf973bc9
avcodecmap: Add mappings for I420/I422/Y444_12LE/BE and GBRA
...
https://bugzilla.gnome.org/show_bug.cgi?id=780100
2017-03-16 17:22:51 +02:00
Emeric Grange
d666041a51
avcodecmap: Add GBR_12LE/BE and GBRA_12LE/BE pixel format mapping for CineForm decoder
2017-03-16 16:10:23 +02:00
Jan Schmidt
bcbe3aff83
avvidenc: Add Stereo3D mapping
...
Add mapping between GStreamer multiview modes/flags and
libav Stereo3D frame packings when encoding video.
https://bugzilla.gnome.org/show_bug.cgi?id=767938
2017-03-16 15:23:01 +11:00
Jan Schmidt
8e6fbe7f63
avviddec: Map any stereo3D info to multiview modes
...
Map any libav Stereo3D side data to GStreamer multiview
mode / flags for playback.
https://bugzilla.gnome.org/show_bug.cgi?id=767938
2017-03-16 15:23:01 +11:00
Sebastian Dröge
887e45e6cc
avcodecmap: Add mapping for CineForm HD / CFHD codec
...
https://bugzilla.gnome.org/show_bug.cgi?id=780024
2017-03-14 18:02:23 +02:00
Garima Gaur
14dc964f0e
Fix some caps leaks when creating pad templates
...
https://bugzilla.gnome.org/show_bug.cgi?id=776700
2017-01-02 12:41:20 +00:00
Sebastian Dröge
cfd7503959
avcodecmap: Add mapping for Flash Screen2 codec
2016-12-04 23:39:00 +02:00
Sebastian Dröge
35f9fd9355
avdemux: Disable GIF "demuxer"
...
It's actually a parser but it a) can only work with the ffmpeg GIF
decoder that is deactivated anyway, and b) it currently causes infinite
linking of avdemux_gif elements with a multiqueue in between in
decodebin.
https://bugzilla.gnome.org/show_bug.cgi?id=775516
2016-12-02 17:06:50 +02:00
Sebastian Dröge
77ad28cd44
avprotocol: Don't use GST_LOG_OBJECT() and friends on an arbitrary struct that is not a GObject
...
https://bugzilla.gnome.org/show_bug.cgi?id=775516
2016-12-02 14:19:46 +02:00
Thibault Saunier
2ae66e2721
Define plugin license outside the call to PLUGIN_DEFINE
...
Msvc fails at pre processing it and states that the
the use of "#" is invalid inside a macro.
2016-11-25 13:22:34 -03:00
Thibault Saunier
863f2c7bb1
Properly check if unistd.h is avalaible
...
And stop providing a meson.h.config as it is not needed (as meson dep
has been bumped to 0.36)
2016-11-25 13:22:34 -03:00
Edward Hervey
9258b8ba53
avcodecmap: Add support for packed 32bit RGBx variants
...
We can support those, so just add the mapping
2016-11-24 17:15:14 +01:00
Sebastian Dröge
ac4a47bacb
av: Enable IVF demuxer (and muxer)
...
It works and is a quite unimportant format, we should get rid of our
parser to reduce the amount of code to maintain.
2016-11-16 17:06:54 +02:00
Marinus Schraal
06a9a34d6d
avdemux: Map artist to artist tag
...
It was incorrectly mapped to album-artist before.
https://bugzilla.gnome.org/show_bug.cgi?id=774398
2016-11-14 13:03:07 +02:00
Tim-Philipp Müller
b81813d928
avmux: blacklist fifo plugin
...
Avoids criticals in gst-inspect-1.0 -a
2016-11-12 15:21:59 +00:00
leigh123linux@googlemail.com
3c3be3125f
avvidenc/dec: Disable more hardware encoder/decoders
...
Important when using a system ffmpeg/libav.
https://bugzilla.gnome.org/show_bug.cgi?id=774278
2016-11-12 10:33:51 +02:00
Sebastian Dröge
88da0fb956
avviddec: Fix comment to say interlace-mode instead of interlaced-mode
2016-11-04 16:27:59 +02:00
Sebastian Dröge
2c38c99a86
avcodecmap: It's interlace-mode, not interlaced-mode
2016-11-04 16:22:07 +02:00
Sebastian Dröge
7f39f69c7c
avcodecmap: Add variant to the ProRes caps
...
https://bugzilla.gnome.org/show_bug.cgi?id=769048
2016-11-01 20:42:52 +02:00
Sebastian Dröge
5e61a8999f
avviddec: Use interlaced-mode=interleaved and set field-order if possible
...
https://bugzilla.gnome.org/show_bug.cgi?id=771376
2016-11-01 20:42:52 +02:00
Sebastian Dröge
d2e65754b3
avcodecmap: Configure field order in the context if we can
...
https://bugzilla.gnome.org/show_bug.cgi?id=771376
2016-11-01 20:42:52 +02:00
Sebastian Dröge
fb9fea0223
avvidenc: Set colorimetry information in the context if known
...
https://bugzilla.gnome.org/show_bug.cgi?id=750882
2016-11-01 20:42:52 +02:00
Sebastian Dröge
5b40fb965b
avviddec: Set colorimetry information from the context if known
...
But only if upstream did not provide that information.
https://bugzilla.gnome.org/show_bug.cgi?id=750882
2016-11-01 20:42:52 +02:00
Tim-Philipp Müller
efe5797041
avcodecmap: Add mapping for Opus audio decoder
...
Make avdec_opus work.
https://bugzilla.gnome.org/show_bug.cgi?id=773672
2016-11-01 19:05:37 +02:00
Sebastian Dröge
f1bca3115e
avaudenc/dec: Allow compilation against ffmpeg < 3.2 again
2016-10-26 23:29:40 +03:00
Sebastian Dröge
440482475f
avaudenc/dec: Ignore S64BE/LE pseudo-codecs
2016-10-26 23:20:52 +03:00
Sebastian Dröge
e3558d4d07
avviddec: Use enum instead of magic numbers for the chroma siting values
2016-09-29 12:01:59 +03:00
Sebastian Dröge
8443af343e
av: Cast AVContext::bit_rate to a guint before passing to varargs functions
...
We expect it to be a int or uint, however it changed the type to a
int64_t in later versions of ffmpeg. As such it would be passed as a 64
bit value to varargs functions, while the consumer of the arguments
assumes only 32 bits. This causes crashes.
https://bugzilla.gnome.org/show_bug.cgi?id=771092
2016-09-14 11:20:48 +02:00
Thibault Saunier
f6c31d1cb6
build: Do not link plugin against lzma and bz2 if using system install
...
And bump version to 1.9.2
2016-09-05 12:44:37 -03:00
Iain Lane
f5f32986b6
Only use AV_CODEC_ID_WRAPPED_AVFRAME on new enough libavcodecs
...
https://bugzilla.gnome.org/show_bug.cgi?id=770753
2016-09-03 14:20:26 +03:00
Thibault Saunier
e4b51a81cb
Add support for Meson as alternative/parallel build system
...
https://github.com/mesonbuild/meson
We only support building with ffmpeg installed system wide and not as
subproject yet.
2016-08-29 09:56:18 -03:00
Thibault Saunier
80924aab15
Use the new API to post flow ERROR messages on the bus
...
https://bugzilla.gnome.org/show_bug.cgi?id=770158
2016-08-26 19:23:32 -03:00
Tim-Philipp Müller
e5ceb287d3
libav: fix confusing 'insane framerate' debug log message
...
Usually means no framerate / variable framerate. Also the
fraction arguments were swapped.
2016-08-20 10:54:07 +01:00
Edward Hervey
8b374b3f82
avvidec: Ensure skipping strategy gets properly reset
...
When switching playback modes, like from TRICKMODE or TRICKMODE_KEY_UNITS
back to regular playback, we need to make sure we set the skip mode
back to the default setting.
While this field would be properly reset when we *have* feedback from
downstream (i.e. diff != G_MAXINT64), it would not be reset during
the initial phase (i.e. when the decoder hasn't pushed a buffer yet,
and therefore the sink hasn't sent back QoS information).
This avoids dropping plenty of frames when going back to regular playback
2016-08-04 10:45:14 +02:00
Sebastian Dröge
3e93ad1bcd
libav: Ignore more quasi-codecs
2016-07-22 14:54:21 +03:00
Sebastian Dröge
5f4bd291c1
libav: Ignore VAAPI decoders and VAAPI/nvenc encoders
...
These can show up when having a build against a system version of ffmpeg.
2016-07-22 14:42:59 +03:00
Sebastian Dröge
0bdceaad8a
avaudenc: Use gst_caps_fixate() instead of gst_caps_truncate()
...
Just truncating might not be enough.
2016-07-05 20:16:45 +03:00
Sebastian Dröge
832b42301d
avaudenc: Create caps from the codec context after it is opened
...
We won't get codec_data and various other information otherwise.
2016-07-05 20:16:09 +03:00
Sebastian Dröge
a5ac55c4a0
avvidenc: Create caps from the codec context after it is opened
...
We won't get codec_data and various other information otherwise.
2016-07-05 20:15:28 +03:00
Edward Hervey
e36fa30c15
avvidec: Don't set bogus latency
...
We might have cases where the framerate is not known (0/1).
2016-05-14 12:09:06 +02:00
Edward Hervey
878d32ad38
avvidec: Report the latency once we're fully configured
...
Several decoders will only be able to report a real latency (has_b_frames)
once they're actually initialized (i.e. when they return their first frame).
Doing it earlier (in set_format) doesn't guarantee that the AVCodecContext
has_b_frames has been properly initialized.
https://bugzilla.gnome.org/show_bug.cgi?id=766362
2016-05-13 09:52:29 +02:00
Sebastian Dröge
445a301844
avcodecmap: Add mapping for G729 caps
...
https://bugzilla.gnome.org/show_bug.cgi?id=766333
2016-05-13 10:27:38 +03:00
Sebastian Dröge
3fb49b6053
avauddec: Finish frames if they are header buffers only and don't produce any output
...
Otherwise we will consider them as one frame of raw audio that is still
pending, and shift all timestamps by the amount of time spent with header
buffers.
https://bugzilla.gnome.org/show_bug.cgi?id=765797
2016-04-29 13:06:07 +03:00
Sebastian Dröge
00ebf95e08
avauddec: If decoding a frame failed, skip it
...
Otherwise the next successfully decoded frame will get its timestamp and we
will slowly let a/v sync drift apart.
https://bugzilla.gnome.org/show_bug.cgi?id=765797
2016-04-29 12:55:19 +03:00
Sebastian Dröge
151cd32a10
avaudenc: Set all required fields in the AVFrame
...
Various functions in libavcodec need them, like the format, sample rate, etc.
and just having them in the context is not enough.
This fixes draining for codecs like MP2 that require a fixed frame size and
require libav to pad the last frame if required.
2016-04-28 18:43:37 +03:00
Sebastian Dröge
2027188c34
avcfg: Use av_strdup() instead of g_strdup() for strings owned by ffmpeg
...
It has its own allocator that depending on the configuration is incompatible
with GLib's and just causes a segmentation fault. Like on Windows.
https://bugzilla.gnome.org/show_bug.cgi?id=760266
2016-04-25 18:39:54 +03:00
Sebastian Dröge
ae3a80eec7
avdeinterlace: Register all filters and only disable all except for yadif during compilation
...
Otherwise avdeinterlace won't find any filters, and we only use yadif in
there.
https://bugzilla.gnome.org/show_bug.cgi?id=765319
2016-04-20 15:27:45 +03:00
Víctor Manuel Jáquez Leal
1af733a636
avvid{dec,enc}: remove dead gobject macros
...
The GObject macros either for GstFFMpegVidDec and GstFFMpegVidEnc can
break the compilation because they are not GTypes, since each av video
elements are registered in runtime.
https://bugzilla.gnome.org/show_bug.cgi?id=764162
2016-03-24 18:36:22 +01:00
Vineeth TM
8603ff7596
libav: use new gst_element_class_add_static_pad_template()
...
https://bugzilla.gnome.org/show_bug.cgi?id=763084
2016-03-24 14:53:51 +02:00
Sebastian Dröge
34fe6af6da
avcodecmap: Only set the bitrate if we actually got it from the caps
...
Otherwise we set a random value from the stack as bitrate. The default (0)
is a better choice and doesn't upset valgrind.
2016-03-11 15:44:16 +02:00
Sebastian Dröge
20586e9f2d
avdeinterlace: Don't assume that get_current_caps() returns non-NULL caps after has_current_caps()
...
Remove calls to gst_pad_has_current_caps() which then go on to call
gst_pad_get_current_caps() as the caps can go to NULL in between. Instead just
use gst_pad_get_current_caps() and check for NULL.
https://bugzilla.gnome.org/show_bug.cgi?id=759539
2016-02-23 18:19:18 +02:00
Tim-Philipp Müller
9e00a37d0e
Don't use exported but undeclared core debug category symbols
...
It's not right and won't work on Windows with MSVC.
2016-02-20 12:59:38 +00:00
Edward Hervey
e3cf542215
avcfg: rc-min-rate and rc-max-rate are now 64bit integers
...
Switch the gobject properties and internal handling to support that
2016-02-16 16:43:23 +01:00
Sebastian Dröge
55fd9e3623
avvidenc: Set width/height and format in the AVFrame we pass to the encoder API
2016-02-16 09:13:23 +02:00
Sebastian Dröge
3f41aaff30
avaudenc: Also use av_free() instead of g_free()
2016-01-25 20:13:10 +01:00
Sebastian Dröge
a7d9d448bd
avaudenc: Use av_malloc() instead of GLib malloc() wrappers for memory freed by ffmpeg
...
It has its own allocator that is not necessarily doing the same as malloc and
will then usually crash. E.g. on Windows or when memalign() is available.
2016-01-25 20:08:11 +01:00
Edward Hervey
da335a0ea3
avvidec: Bring mpeg video decoders up to PRIMARY rank
...
We should have done that ages ago ...
https://bugzilla.gnome.org/show_bug.cgi?id=574461
2016-01-21 17:35:51 +01:00
Sebastian Dröge
6e18a221a0
avviddec: Use AVFrame API instead of deprecated AVPicture API
2016-01-20 10:31:40 +02:00
Sebastian Dröge
4e0b05bf7f
av: Use av_image_get_buffer_size() instead of deprecated avpicture_get_size()
2016-01-19 09:42:47 +02:00
Sebastian Dröge
fce3e0ba66
avdemux: Use av_packet_unref() instead of deprecated av_free_packet()
2016-01-19 09:39:00 +02:00
Sebastian Dröge
1d7d7033bc
avvidenc: Use AVPacket.flags for detecting keyframes
...
AVCodec.coded_frame is deprecated and will disappear at some point
in the future.
2016-01-19 09:36:01 +02:00
Sebastian Dröge
e04bcf0601
avdeinterlace: Chain up to parent class' dispose()
...
https://bugzilla.gnome.org/show_bug.cgi?id=757498
2016-01-16 17:24:09 +02:00
Sebastian Dröge
46fb2e9f11
libav: Bitrate field changed from int to int64_t, fix compiler warnings
...
Cast it to a gint64 for now though, as otherwise we will fail compilation
with ffmpeg 2.8.
https://bugzilla.gnome.org/show_bug.cgi?id=757498
2016-01-16 17:23:37 +02:00
Andreas Cadhalpun
6235a04ef3
libav: Remove usage of deprecated API
...
https://bugzilla.gnome.org/show_bug.cgi?id=757498
2016-01-16 16:47:40 +02:00
Andreas Cadhalpun
ddec3a2c78
avdeinterlace: Port non-deprecated AVFilter API
...
https://bugzilla.gnome.org/show_bug.cgi?id=757498
2016-01-16 11:11:44 +01:00
Tim-Philipp Müller
83ce87e7c8
av: canonicalise av plugin name more consistently in more places
...
Use g_strdelimit(), make sure to include comma as well, which
isn't included in G_STR_DELIMITERS.
https://bugzilla.gnome.org/show_bug.cgi?id=734451
2016-01-07 17:16:41 +00:00
Sebastian Dröge
8e466b73d8
avcodecmap: Add special mapping for mono channel layouts
...
In ffmpeg this is the same as FRONT_CENTER, but we distinguish between
FRONT_CENTER and MONO in GStreamer. Add an explicit mapping for this special
case in the translations functions.
https://bugzilla.gnome.org/show_bug.cgi?id=759846
2015-12-24 13:10:55 +01:00
Vineeth TM
ae27b9c503
avviddec: remove realvideo slice_offset handling
...
Handling slice_offset in avviddec is resulting in invalid memory read.
Since rv decoders anyways handle slice_offset, removing the same to fix
memory mishandlings
https://bugzilla.gnome.org/show_bug.cgi?id=758726
2015-12-23 13:17:08 +01:00
Reynaldo H. Verdejo Pinochet
193b0d81d1
Require libav provided by FFmpeg at run-time
...
Error out if system's libav* libraries are not
provided by FFmpeg. Libav-incompatible changes
were introduced to support the latter so we
can no longer support both.
https://bugzilla.gnome.org/show_bug.cgi?id=758183
2015-12-04 11:59:47 -08:00
Sebastian Dröge
5df8cc5e38
avviddec: Make sure to use a buffer pool with the correct width/height configured on it for pushing buffers downstream
...
If downstream does not provide a (usable) pool, we would use our internal
pool. But the internal pool might be configured with a different width/height
because of padding, which then will cause problems if we push buffers from it
directly downstream.
Instead create a new pool if the width/height is different.
This prevents crashes with vaapisink and d3dvideosink for example.
Based on the debugging results and discussions with
Nicolas Dufresne <nicolas.dufresne@collabora.com>
https://bugzilla.gnome.org/show_bug.cgi?id=758344
2015-12-01 12:34:27 +02:00
Vineeth T M
839a72f92c
avviddec: Fix structure memory leak
...
gst_structure_copy already takes a reference for config_copy.
No need to take another reference while setting it to buffer pool
https://bugzilla.gnome.org/show_bug.cgi?id=758512
2015-11-23 12:05:26 -03:00
Reynaldo H. Verdejo Pinochet
598f71d12c
Remove unnecessary NULL checks before g_free()
...
g_free() is NULL-safe
(Includes unrelated formatting change to go through
indent checker commit hook)
2015-11-20 10:48:47 -08:00
Nicolas Dufresne
2a7aaeb3da
avviddec: Don't fallback on allocation failure
...
Allocation should keep working, falling back causes the stride to
change which is not supported in direct rendering.
https://bugzilla.gnome.org/show_bug.cgi?id=756028
2015-11-07 12:12:46 -05:00
Vineeth TM
2d94a1cbcc
avvidenc: Fix frame memory leak
...
The frame being passed to handle_frame should be unref'ed in all cases
https://bugzilla.gnome.org/show_bug.cgi?id=757453
2015-11-02 09:25:34 +02:00
Vineeth TM
e5b9e11383
avdemux: Fix string memory leaks
...
https://bugzilla.gnome.org/show_bug.cgi?id=757454
2015-11-02 09:22:37 +02:00
Mark Nauwelaerts
67e55e47e2
avviddec: _drain and _finish need slightly different handling
...
... since they handle separate cases in video decoder with different requirements.
Consider e.g. x264enc ! rtph264pay ! identity drop-probability=0.1 ! rtph264depay
to illustrate a need for such separation.
2015-10-26 19:54:10 +01:00
Sebastian Dröge
dc4b9ef7e6
avviddec: Fix bufferpool config double free by taking a copy as needed
...
Also free the config in two code paths where we leaked it before.
2015-10-16 18:52:57 +03:00
Thiago Santos
1356ff84b3
avcodecmap: add jpeg2000 decoder mapping
...
Map the 3 possible jpeg2000 caps to JPEG2000 codec id
2015-10-11 05:27:57 -03:00
Sebastian Dröge
eedefc9f6b
avcodecmap: Don't allocate dummy codec data anymore, it causes crashes nowadays
...
Multithreaded encoders are going to free this dummy codec data twice, e.g.
with this pipeline
gst-launch-1.0 videotestsrc num-buffers=40 ! \
videoconvert ! avenc_mjpeg ! fakesink
2015-10-03 18:25:35 +01:00
Sebastian Dröge
e5e78379ad
avvidenc: Pass the correct user_data to gst_buffer_new_wrapped_full()
...
Fixes crash with e.g.
gst-launch-1.0 videotestsrc num-buffers=40 ! \
videoconvert ! avenc_huffyuv ! fakesink
2015-10-03 18:14:05 +01:00
Sebastian Dröge
fcdb9c08c5
libav: G_CONST_RETURN is deprecated since GLib 2.30
2015-10-02 23:02:01 +03:00
Luis de Bethencourt
3999a29748
avviddec: only free config when pool doesn't take ownership
...
Since gst_buffer_pool_set_config() takes ownership of the config structure,
it is only necessary to free the structure before using it when the true
branch of if (gst_buffer_pool_config_validate_params) hasn't run.
gst_buffer_pool_set_config() always takes ownership of the structure
regardless of success or failure. Which means the return, checked with
if (!working_pool), has no relation to the state of the structure.
2015-10-02 11:49:39 +01:00
Luis de Bethencourt
074a128f0f
avviddec: fix memory leak
...
Free config before overwriting.
CID #1320708
2015-09-29 16:44:47 +01:00
Tim-Philipp Müller
6fadf448de
avvidec: increase default alignment to 32 bytes
...
Change default alignment from 16 to 32 bytes, which fixes crashes
when decoding H.265 using AVX2-based decoder code paths and when
using ximagesink/glimagesink.
https://bugzilla.gnome.org/show_bug.cgi?id=754120
2015-09-15 16:36:49 +01:00
Tim-Philipp Müller
a0ebef9637
avvideodec: ensure required mem alignment fixing avdec_h265 crashes with ximagesink/glimagesink
...
Make sure the alignment requirement in GstAllocationParams
matches the GstVideoAlignment requirements. This fixes
issues with avdec_h265 crashing in the avx2 code path when
used with playbin and ximagesink/glimagesink as videosink.
The internal video pool would allocate buffers with an
alignment of 15 even though GstVideoAlignment specified
a stride_align requirement of 31 (which comes from ffmpeg).
https://bugzilla.gnome.org/show_bug.cgi?id=754120
2015-09-15 16:36:30 +01:00
Jan Schmidt
30a406591a
avvid/audenc: Set some tags in the output for downstream's info
...
Add the codec name and bitrate into the output for informational
purposes. Bitrate in particular is now used by flvmux to set
videodatarate and audiodatarate in the resulting stream
2015-08-24 00:01:40 +10:00
Nicolas Dufresne
6e590fe498
avviddec: Fix pool reallocation logic
...
Some check where incorect and also unsafe. The only reliable information
in get_buffer2 is the picture width/height really. The side effect is
that the width/height of the internal pool endup padded, so when we
switch we also need to switch to the a new width/height, hence we save
the pool info.
https://bugzilla.gnome.org/show_bug.cgi?id=753869
2015-08-20 16:23:23 -07:00
Nicolas Dufresne
e3bdfb5608
aviddec: Re-enable direct rendering
...
This is achieved by using a tempory internal pool. We can then switch to a
downstream pool if the downstream pool buffer have matching strides.
https://bugzilla.gnome.org/show_bug.cgi?id=752802
2015-08-17 10:47:53 +02:00
Thiago Santos
fa29036836
avvidenc: use template subset check for accept-caps
...
It is faster than doing a query that propagates downstream and
should be enough
2015-08-17 04:36:39 -03:00
Thiago Santos
ad215706ec
avaudenc: use pad template caps for accept-caps
...
use template subset check for accept-caps
It is faster than doing a query that propagates downstream and
should be enough
2015-08-17 04:35:41 -03:00
Thiago Santos
15ef18c3e1
avaudenc: remove useless getcaps method
...
It just calls the exact same function as the default handler
2015-08-16 14:14:27 -03:00
Thiago Santos
427db7f484
avvidenc: remove useless getcaps method
...
It just calls the exact same function as the default handler
2015-08-16 14:13:05 -03:00
Thiago Santos
5c56635e97
avauddec: let audiodecoder call the default pad query handler
...
Avoids repeating the same handling in many decoders
2015-08-15 13:51:35 -03:00
Thiago Santos
8cc2e1a76b
avviddec: let videodecoder call the default pad query handler
...
Avoids repeating the same handling in many decoders
2015-08-15 13:51:35 -03:00
Thiago Santos
1a098de5eb
avviddec: use template caps intersection for accept-caps
...
Avoid doing downstream caps queries when accept-caps should just
do a shallow caps check on the element itself
https://bugzilla.gnome.org/show_bug.cgi?id=753623
2015-08-14 09:14:11 -03:00
Thiago Santos
2b387ba827
avauddec: use template caps intersection for accept-caps
...
Avoid doing downstream caps queries when accept-caps should just
do a shallow caps check on the element itself
https://bugzilla.gnome.org/show_bug.cgi?id=753623
2015-08-14 09:14:11 -03:00
Jan Schmidt
51896af52b
Map ffmpeg metadata to GStreamer tags
...
Update to the metadata API ffmpeg has had in
place for a long time now, and reenable output
of GStreamer tags from the demuxer.
https://bugzilla.gnome.org/show_bug.cgi?id=566605
2015-08-05 16:53:28 -04:00
Olivier Crête
c1333df059
avviddec: Remove unused force parameter
...
This parameter has been always false for a long time.
2015-08-03 21:45:07 -04:00
Olivier Crête
1c70fb229a
avviddec: Use caps-like size in get_buffer2()
...
The size in the AVFrame in get_buffer2 don't match the output size,
instead they match ffmpeg's memory requirements, so we can't compare
them from the values of the output AVFrame. Those are comparable to
the values in the passed AVCodecContext.
2015-08-03 21:40:12 -04:00
Olivier Crête
e7ece560d6
avviddec: Reset current_dr on close and when not chosing it
...
https://bugzilla.gnome.org/show_bug.cgi?id=753189
2015-08-03 21:03:05 -04:00
Olivier Crête
0a0ee42752
avviddec: Disable direct rendering before a frame has been produces
...
ffmpeg doesn't provide the final's image width & height in the get_buffer2()
callback, so it's not possible to create an output state for GstVideoDecoder
at this stage. So only try to do direct rendering if the buffer pool has already
been negotiated based on the final decoded size.
This partially reverts the effects of 2e621f8db
https://bugzilla.gnome.org/show_bug.cgi?id=752802
2015-07-28 16:16:10 -04:00
Olivier Crête
1a127d19bb
avviddec: Get code out of loop
...
Code was executed only on the first iteration, so just pull it out
of the loop entirely. This makes it clear it has nothing to do with the loop.
2015-07-27 18:49:49 -04:00
Olivier Crête
431f3e0e6f
avviddec: Only create the AVBuffer once the stride is validated
...
If it is created earlier and the stride is invalid, then the frame
will be freed and it won't be possible to use it in the fallback path.
Not doing this causes a segfault because it will try to use
already freed memory.
2015-07-27 18:46:17 -04:00
Olivier Crête
2e621f8dbf
avviddec: Re-enable direct rendering
2015-07-27 15:29:49 -04:00
Olivier Crete
3b6c656e25
avauddec: Read channels from the channels field
...
If there is no layout, just read the channel count from the
channels field.
https://bugzilla.gnome.org/show_bug.cgi?id=752186
2015-07-27 14:18:32 -04:00
Olivier Crête
6bfe79d903
avviddec: Ignore negotiation error on shutdown
...
https://bugzilla.gnome.org/show_bug.cgi?id=752800
2015-07-27 13:58:43 -04:00
Olivier Crête
7afaf5c020
avauddec: Access field using accessors
...
Those fields are documented to only be safe to access using
accessors as their position is not part of the ABI.
2015-07-25 03:06:10 -04:00
James Smith
f92bf2618c
Add support for musepack (mpc) sv8 audio
...
https://bugzilla.gnome.org/show_bug.cgi?id=732682
2015-07-22 09:44:27 +01:00
Vineeth T M
7d3c7109ac
avviddec: fix slice_offset memory leak
...
In case of real videos, slice_offset is being allocated,
but the same is not being freed.
https://bugzilla.gnome.org/show_bug.cgi?id=752404
2015-07-21 11:20:07 +01:00
Sebastian Dröge
5d2e9b7b80
Make the LGPL build the default and require --enable-gpl to build a GPL licensed version
2015-07-01 22:40:02 +02:00
Sebastian Dröge
b526816cfe
avmux: Blacklist some subtitle and adaptive streaming muxers
2015-07-01 22:11:52 +02:00
Sebastian Dröge
97f58baecd
Switch from libav v11.4 to ffmpeg n2.7.1
...
ffmpeg seems to be the one of the two forks, which is most widely used by
Linux distributions and in general. Also Google is using it for e.g. Chrome
and has engineers working on finding and fixing security issues in it.
https://bugzilla.gnome.org/show_bug.cgi?id=751607
2015-07-01 21:40:00 +02:00
Sebastian Dröge
1dcdeb977c
avaudenc: Remember how many samples the codec consumed for telling the base class
2015-06-30 20:01:46 +02:00
Thomas Bluemel
30a4a28793
avauddec: Ensure input buffers have FF_INPUT_BUFFER_PADDING_SIZE padding, which is required by avcodec_decode_audio4 ()
2015-06-30 19:19:42 +02:00
Sebastian Dröge
626152dd6f
avmux: Ignore stream_segment,ssegment muxer that is provided by ffmpeg
...
The comma confuses our code, e.g. it's not a valid element name or structure
name.
2015-06-29 13:29:05 +02:00
Sebastian Dröge
8271b2755a
avvidenc: Fix compiler warning
...
gstavvidenc.c: In function 'gst_ffmpegvidenc_flush_buffers':
gstavvidenc.c:733:7: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
GstFFMpegVidEncClass *oclass =
^
cc1: all warnings being treated as errors
2015-06-28 16:54:35 +02:00
Sebastian Dröge
e964dcdb02
avvidenc: Set AVFrame flags for interlacing per frame and not in set_format()
...
They will get overridden by av_frame_unref() with the defaults.
2015-06-28 16:35:46 +02:00
Sebastian Dröge
45ab256e54
av{aud,vid}enc: Create wrapped output buffers with GST_MEMORY_FLAG_READONLY
...
libav might still have references to the buffers itself and uses a writability
system similar to ours based on reference counts.
2015-06-28 16:32:02 +02:00
Sebastian Dröge
6998d982c7
avvidenc: Properly wrap and free the output AVPackets generated during draining
2015-06-28 16:30:54 +02:00
Sebastian Dröge
3943cdf18a
avvidenc: Make sure to keep input data alive until libav is done with it
2015-06-28 16:27:52 +02:00
Sebastian Dröge
3ca7c041b1
avaudenc: Make sure to keep input data alive until libav is done with it
2015-06-28 16:21:33 +02:00
Sebastian Dröge
d6b5fc4f34
av{aud,vid}enc: Stop using deprecated AVFrame APIs
2015-06-28 15:37:23 +02:00
Sebastian Dröge
2a445cb5f2
avauddec: Remove custom buffer allocation function
...
libav always uses planar audio formats nowadays, not much use in
us trying to allocate anything here until we add support for planar
aka non-interleaved audio formats at least in audioconvert.
2015-06-28 12:41:55 +02:00
Sebastian Dröge
4240ff2bfc
avauddec: Use undeprecated AVFrame API
2015-06-28 12:41:55 +02:00
Sebastian Dröge
3d9816ce7f
avviddec: Free frame before the codec is freed
...
Who knows, maybe freeing the frame calls cleanup inside the codec.
2015-06-28 12:41:55 +02:00
Sebastian Dröge
982f5262d4
avviddec: Use undeprecated AVFrame API and unref frame once we're done with it
2015-06-28 12:41:55 +02:00
Sebastian Dröge
0767bdda5f
avauddec: Negotiate based on the AVFrame instead of just the AVCodecContext
2015-06-28 12:41:55 +02:00
Sebastian Dröge
523ddb5346
avviddec: Use the new get_buffer2() API instead of the deprecated APIs
...
And do the frame reference counting by adding AVBufferRefs to the frame.
2015-06-28 12:41:55 +02:00
Sebastian Dröge
ad7613be0d
avviddec: Also proxy the data/size pointers for our wrapper AVBufferRef
2015-06-28 12:41:55 +02:00
Wim Taymans
8da0a61dc0
codecmap: add vp9 mapping
2015-06-26 17:30:25 +02:00
Sebastian Dröge
8cb8461f7e
avviddec: Wrap the original AVBufferRef in our own buffer for the destroy function
...
Just adding a dummy buffer at the very end might not be enough as there
already might be too many buffers.
2015-06-26 16:58:55 +02:00
Sebastian Dröge
9b2c0c2dbc
avviddec: libav will already copy the reordered_opaque pointer for us
...
If we do it ourselves, it might get the wrong value if our assumptions are
broken by libav at a later time.
2015-06-26 16:58:55 +02:00
Sebastian Dröge
5b6c8ee8c9
avviddec: Negotiate based on the AVFrame information, not the context information
...
The context contains the information from the latest input frame, we're
however interested in the information from the latest output frame. As we have
to negotiate for the buffer that is about to come next.
This should fix some crashes that happened when both information got out of
sync. If that happens now, we will do fallback allocation until the output
is renegotiated too.
https://bugzilla.gnome.org/show_bug.cgi?id=750865
2015-06-26 16:58:55 +02:00
Nicolas Dufresne
a33a1bf6e4
avcodec: Check against codec format list
...
There exist few formats (deprecated though) used by mjpeg decoder
and encoder that maps to the same GStreamer format. To properly
pick the right format, also lookup each Codec list before accepting
the format. This fixes error when trying to use mjpeg encoder.
Note that this may results in faded colors. In fact, these special
format are meant to specify that this is full range YUV. Colorimetry
in gst-libav is not yet implemented, hence is ignored in general. So
I think it's fine to first fix the issue before addressing the missing
feature.
https://bugzilla.gnome.org/show_bug.cgi?id=750398
2015-06-11 10:23:33 -04:00
Jan Schmidt
1f1e24f63f
viddec: Replicate any 3D/multiview info from input caps onto output
2015-06-11 12:25:45 +10:00
Sebastian Dröge
b81cb99d9f
avviddec: Release stream lock while calling avcodec_decode_video2()
...
It might call back into us from another thread and try to take the stream lock
again, e.g. to allocate a buffer.
https://bugzilla.gnome.org/show_bug.cgi?id=726020
2015-06-05 11:57:37 +02:00
Olivier Crête
172f9c9823
avviddec: Post error message before returning a flow error
...
This is required.
2015-06-02 20:48:33 -04:00
Aurélien Zanelli
00ff477f29
avcodecmap: Use video/x-cavs mime type instead of video/x-gst-av-cavs
...
More generic mime-type which can be used by other decoders than libav.
https://bugzilla.gnome.org/show_bug.cgi?id=727731
2015-06-02 08:54:46 +01:00
Sebastian Dröge
c6cc7b385a
avauddev: Unref decoded AVFrame after we're done with it
...
Otherwise we might leak some memory, like all compressed data when using
avdec_ac3.
2015-06-02 09:09:09 +02:00
Mark Nauwelaerts
2270026d82
avdemux: resurrect some flow return handling
...
https://bugzilla.gnome.org/show_bug.cgi?id=744572
2015-03-29 14:01:50 +02:00
Tim-Philipp Müller
55f98c5b9a
avdemux: fix double semicolon
2015-03-10 09:37:19 +00:00
Sebastian Dröge
4f7d873c4c
libav: Add support for 10 bit planar AYUV formats
2015-03-10 10:18:53 +01:00
Sebastian Dröge
d3a2a9a951
libav: Change from deprecated PIX_FMT_* to AV_PIX_FMT_*
2015-03-10 10:17:45 +01:00
Sebastian Dröge
4459d706c8
avviddec: Don't copy padding if handling a frame failed
...
We will return an error right afterwards anyway.
2015-03-09 22:02:38 +01:00
Sebastian Dröge
099ea5f2d1
avviddec: If a flow return during draining is not OK, don't drain any further
2015-03-09 22:02:19 +01:00
Sebastian Dröge
af91ba1620
avviddec: Error out if we try to allocate a buffer without being negotiated
...
Otherwise we just run into assertions because we should've errored out
already.
2015-03-09 22:01:43 +01:00
Luis de Bethencourt
18667c5698
avdemux: remove duplicate goto block
2015-03-05 14:27:52 +00:00