...
 
Commits (21)
=== release 1.6.4 ===
2016-04-14 Tim-Philipp Müller <tim@centricular.com>
* configure.ac:
releasing 1.6.4
2016-02-15 17:17:29 +0200 Sebastian Dröge <sebastian@centricular.com>
* gst-libs/ext/libav:
libav: Update to n2.8.6
=== release 1.6.3 ===
2016-01-20 15:08:50 +0200 Sebastian Dröge <sebastian@centricular.com>
* ChangeLog:
* NEWS:
* RELEASE:
* configure.ac:
* docs/plugins/inspect/plugin-libav.xml:
* gst-libav.doap:
Release 1.6.3
2015-11-27 11:16:07 +0900 Vineeth TM <vineeth.tm@samsung.com>
* ext/libav/gstavviddec.c:
* ext/libav/gstavviddec.h:
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-24 13:06:13 +0100 Sebastian Dröge <sebastian@centricular.com>
* ext/libav/gstavcodecmap.c:
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
2016-01-16 11:09:31 +0100 Sebastian Dröge <sebastian@centricular.com>
* gst-libs/ext/libav:
libav: Update to ffmpeg n2.8.5
2015-12-21 12:41:02 +0100 Sebastian Dröge <sebastian@centricular.com>
* gst-libs/ext/libav:
libav: Update to ffmpeg n2.8.4
=== release 1.6.2 ===
2015-12-14 19:53:48 +0100 Sebastian Dröge <sebastian@centricular.com>
* ChangeLog:
* NEWS:
* RELEASE:
* configure.ac:
* docs/plugins/inspect/plugin-libav.xml:
* gst-libav.doap:
Release 1.6.2
2015-12-01 15:12:22 +0200 Sebastian Dröge <sebastian@centricular.com>
* gst-libs/ext/libav:
libav: Update to n2.8.3
2015-11-30 19:01:41 +0200 Sebastian Dröge <sebastian@centricular.com>
* ext/libav/gstavviddec.c:
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-11-23 10:31:39 +0900 Vineeth T M <vineeth.tm@samsung.com>
* ext/libav/gstavviddec.c:
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-12 10:47:04 +0100 Sebastian Dröge <sebastian@centricular.com>
* gst-libs/ext/libav:
libav: Update to n2.8.2
2015-11-07 12:11:57 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com>
* ext/libav/gstavviddec.c:
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-02 10:00:55 +0900 Vineeth TM <vineeth.tm@samsung.com>
* ext/libav/gstavvidenc.c:
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 10:20:02 +0900 Vineeth TM <vineeth.tm@samsung.com>
* ext/libav/gstavdemux.c:
avdemux: Fix string memory leaks
https://bugzilla.gnome.org/show_bug.cgi?id=757454
=== release 1.6.1 ===
2015-10-30 17:00:35 +0200 Sebastian Dröge <sebastian@centricular.com>
* ChangeLog:
* NEWS:
* RELEASE:
* configure.ac:
* docs/plugins/inspect/plugin-libav.xml:
* gst-libav.doap:
Release 1.6.1
2015-10-16 18:52:57 +0300 Sebastian Dröge <sebastian@centricular.com>
* ext/libav/gstavviddec.c:
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-14 10:18:01 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst-libs/ext/libav:
libav: Update to n2.8.1
2015-10-13 14:28:44 +0100 Luis de Bethencourt <luisbg@osg.samsung.com>
* ext/libav/gstavviddec.c:
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.
CID #1320708
2015-10-03 18:25:35 +0100 Sebastian Dröge <sebastian@centricular.com>
* ext/libav/gstavcodecmap.c:
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:14:05 +0100 Sebastian Dröge <sebastian@centricular.com>
* ext/libav/gstavvidenc.c:
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
=== release 1.6.0 ===
2015-09-25 Sebastian Dröge <slomo@coaxion.net>
2015-09-25 23:32:21 +0200 Sebastian Dröge <sebastian@centricular.com>
* ChangeLog:
* NEWS:
* RELEASE:
* configure.ac:
releasing 1.6.0
* docs/plugins/inspect/plugin-libav.xml:
* gst-libav.doap:
Release 1.6.0
=== release 1.5.91 ===
......
This is GStreamer 1.6.0
The GStreamer team is proud to announce a new major feature release in the
stable 1.x API series of your favourite cross-platform multimedia framework!
This release has been in the works for more than a year and is packed with new
features, bug fixes and other improvements.
See http://gstreamer.freedesktop.org/releases/1.6/ for the full list of
changes.
Highlights
- Stereoscopic 3D and multiview video support
- Trick mode API for key-frame only fast-forward/fast-reverse playback etc.
- Improved DTS (decoding timestamp) vs. PTS (presentation timestamp) handling
to account for negative DTS
- New GstVideoConverter API for more optimised and more correct conversion of
raw video frames between all supported formats, with rescaling
- v4l2src now supports renegotiation
- v4l2transform can now do scaling
- V4L2 Element now report Colorimetry properly
- Easier chunked recording of MP4, Matroska, Ogg, MPEG-TS: new splitmuxsink
and multifilesink improvements
- Content Protection signalling API and Common Encryption (CENC) support for
DASH/MP4
- Many adaptive streaming (DASH, HLS and MSS) improvements
- New PTP and NTP network client clocks and better remote clock tracking
stability
- High-quality text subtitle overlay at display resolutions with glimagesink
or gtkglsink
- RECORD support for the GStreamer RTSP Server
- Retransmissions (RTX) support in RTSP server and client
- RTSP seeking support in client and server has been fixed
- RTCP scheduling improvements and reduced size RTCP support
- MP4/MOV muxer acquired a new "robust" mode of operation which attempts to
keep the output file in a valid state at all times
- Live mixing support in aggregator, audiomixer and compositor was improved a
lot
- compositor now supports rescaling and converting inputs streams on the fly
- New audiointerleave element with proper input synchronisation and live input
support
- Blackmagic Design DeckLink capture and playback card support was rewritten
from scratch; 2k/4k support; mode sensing
- KLV metadata support in RTP and MPEG-TS
- H.265 video encoder (x265), decoders (libav, libde265) and RTP payloader and
depayloaders
- New DTLS plugin and SRTP/DTLS support
- OpenGL3 support, multiple contexts and context propagation, 3D video,
transfer/conversion separation, subtitle blending
- New OpenGL-based QML video sink, Gtk GL video sink, CoreAnimation
CAOpenGLLayerSink video sink
- gst-libav switched to ffmpeg as libav-provider, gains support for
3D/multiview video, trick modes, and the CAVS codec
- GstHarness API for unit tests
- gst-editing-services got a completely new ges-launch-1.0 interface, improved
mixing support and integration into gst-validate
- gnonlin has been deprecated in favor of nle (Non Linear Engine) in
gst-editing-services
- gst-validate has a new plugin system, an extensive default testsuite,
support for concurrent test runs and valgrind support
- cerbero build tool for SDK binary packages gains new 'bundle-source' command
- Various improvements to the Android, iOS, OS X and Windows platform support
This is GStreamer 1.6.4
The GStreamer team is pleased to announce the fourth and likely last
bugfix release in the old stable 1.6 release series of your favourite
cross-platform multimedia framework!
This release only contains bugfixes and it should be safe to update from 1.6.x.
This release maintains API/ABI backwards compatibility with the
GStreamer 1.0, 1.2, 1.4 and 1.6 release series.
For details about the GStreamer 1.6 series and the latest version of this
document see the GStreamer 1.6 release page:
http://gstreamer.freedesktop.org/releases/1.6/
Bug fix summary:
- audio parsers: make sure to send tags before pushing the first buffer,
so all metadata is available at preroll. Fixes metadata collection in
mopidy with certain FLAC files.
- fix decoding glitches at the beginning of some mp3 streams when streaming
- multiqueue eos handling fixes
- tcpserversink/multisocketsink: fix 100% cpu usage on client disconnect
- video4linux: colorimetry and colorspace handling fixes
- udpsrc: add option to enable/disable multicast loopback ("loop" property)
- RTP JPEG: depayloader robustness fixes; payloader now accepts different
quant tables for the chroma components
- directsoundsink: fix some issues around muting/unmuting the sound
- dvdreadsrc: don't jump to wrong title when seeking back to 0 for titles != 1
- adaptivedemux: fix race on shutdown that could result in deadlocks
in hlsdemux/dashdemux, especially when stopped before playback started
- decklink: various robustness fixes in decklinkaudiosrc and decklinkvideosrc
- mpeg4parser: prevent assertion when scanning for sync code
- fbdevsink: fix crash caused by wrong bpp calculation
- tsdemux: fix hang in preroll caused by bogus timestamp/wraparound
handling in some corner cases
- tsdemux: fix accurating seeking
- h265parse: fix crash converting from hevc format to nal-aligned bytestream
- h264parse, h265parse: fix handling of downstream force-key-unit events
- g-i annotation fixes for bindings for gst_element_query_convert(),
gst_pad_get_current_caps(), and gst_pad_peer_query_caps()
- gst-libav: update internal libav copy to n2.8.6
- rtsp-server: report RECORD and ANNOUNCE as supported in the OPTIONS
- rtsp-server: prevent receival of looped back packets on Windows if a
multicast transport is used
- various minor memory leak fixes
- miscellaneous other fixes
- fix crashes on newer windows versions when GTypes are passed through
vararg functions as is done in souphttpsrc or during ges_init(). This
would manifest itself if the application was compiled with MSVC
and /DYNAMICBASE (address space layout randomization) was used.
- Bug list: https://bugzilla.gnome.org/buglist.cgi?product=GStreamer&target_milestone=1.6.4
Release notes for GStreamer libav Plugins 1.6.0
Release notes for GStreamer libav Plugins 1.6.4
The GStreamer team is pleased to announce a new bug-fix release in the
old 1.6 stable series of the core of the GStreamer streaming media framework.
The GStreamer team is proud to announce a new major feature release in the
stable 1.x API series of your favourite cross-platform multimedia framework!
This release only contains bugfixes and it should be safe to update from 1.6.x.
For a full list of bugfixes see Bugzilla.
This release has been in the works for more than a year and is packed with new
features, bug fixes and other improvements.
See
http://gstreamer.freedesktop.org/releases/1.6/
for the full list of changes.
This release maintains API/ABI backwards compatibility with the
GStreamer 1.0, 1.2, 1.4 and 1.6 release series.
......@@ -39,20 +37,17 @@ contains a set of less supported plugins that haven't passed the
There were no bugs fixed in this release
==== Download ====
You can find source releases of gst-libav in the download
directory: http://gstreamer.freedesktop.org/src/gst-libav/
directory: https://gstreamer.freedesktop.org/src/gst-libav/
The git repository and details how to clone it can be found at
http://cgit.freedesktop.org/gstreamer/gst-libav/
==== Homepage ====
The project's website is http://gstreamer.freedesktop.org/
The project's website is https://gstreamer.freedesktop.org/
==== Support and Bugs ====
......@@ -77,8 +72,5 @@ subscribe to the gstreamer-devel list.
Contributors to this release
* Jan Schmidt
* Nicolas Dufresne
* Sebastian Dröge
* Tim-Philipp Müller
 
\ No newline at end of file
......@@ -3,7 +3,7 @@ AC_PREREQ(2.69)
dnl initialize autoconf
dnl when going to/from release please set the nano (fourth number) right !
dnl releases only do Wall, cvs and prerelease does Werror too
AC_INIT(GStreamer libav, 1.6.0,
AC_INIT(GStreamer libav, 1.6.4,
http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer,
gst-libav)
......@@ -40,11 +40,11 @@ GST_API_VERSION=1.0
AC_SUBST(GST_API_VERSION)
AG_GST_LIBTOOL_PREPARE
AS_LIBTOOL(GST, 600, 0, 600)
AS_LIBTOOL(GST, 604, 0, 604)
dnl *** required versions of GStreamer stuff ***
GST_REQ=1.6.0
GST_PBREQ=1.6.0
GST_REQ=1.6.3
GST_PBREQ=1.6.3
ORC_REQ=0.4.16
ORC_CHECK([$ORC_REQ])
......
This diff is collapsed.
......@@ -99,6 +99,9 @@ gst_ffmpeg_channel_positions_to_layout (GstAudioChannelPosition * pos,
if (!pos)
return 0;
if (channels == 1 && pos[0] == GST_AUDIO_CHANNEL_POSITION_MONO)
return AV_CH_LAYOUT_MONO;
for (i = 0; i < channels; i++) {
for (j = 0; j < G_N_ELEMENTS (_ff_to_gst_layout); j++) {
if (_ff_to_gst_layout[j].gst == pos[i]) {
......@@ -127,6 +130,15 @@ gst_ffmpeg_channel_layout_to_gst (guint64 channel_layout, gint channels,
} else {
guint i, j;
/* Special path for mono, as AV_CH_LAYOUT_MONO is the same
* as FRONT_CENTER but we distinguish between the two in
* GStreamer
*/
if (channels == 1 && channel_layout == AV_CH_LAYOUT_MONO) {
pos[0] = GST_AUDIO_CHANNEL_POSITION_MONO;
return TRUE;
}
for (i = 0; i < 64; i++) {
if ((channel_layout & (G_GUINT64_CONSTANT (1) << i)) != 0) {
nchannels++;
......@@ -2967,12 +2979,8 @@ gst_ffmpeg_caps_with_codecid (enum AVCodecID codec_id,
GST_DEBUG ("have codec data of size %" G_GSIZE_FORMAT, map.size);
gst_buffer_unmap (buf, &map);
} else if (context->extradata == NULL && codec_id != AV_CODEC_ID_AAC_LATM &&
codec_id != AV_CODEC_ID_FLAC) {
/* no extradata, alloc dummy with 0 sized, some codecs insist on reading
* extradata anyway which makes then segfault. */
context->extradata =
av_mallocz (GST_ROUND_UP_16 (FF_INPUT_BUFFER_PADDING_SIZE));
} else {
context->extradata = NULL;
context->extradata_size = 0;
GST_DEBUG ("no codec data");
}
......
......@@ -212,6 +212,7 @@ gst_ffmpegdemux_base_init (GstFFMpegDemuxClass * klass)
sinkcaps = gst_ffmpeg_formatid_to_caps (name);
sinktempl = gst_pad_template_new ("sink",
GST_PAD_SINK, GST_PAD_ALWAYS, sinkcaps);
g_free (name);
videosrctempl = gst_pad_template_new ("video_%u",
GST_PAD_SRC, GST_PAD_SOMETIMES, GST_CAPS_ANY);
audiosrctempl = gst_pad_template_new ("audio_%u",
......@@ -2116,6 +2117,8 @@ gst_ffmpegdemux_register (GstPlugin * plugin)
g_warning ("Register of type avdemux_%s failed", name);
g_free (type_name);
g_free (typefind_name);
g_free (extensions);
g_free (name);
return FALSE;
}
......
......@@ -331,10 +331,6 @@ gst_ffmpegviddec_close (GstFFMpegVidDec * ffmpegdec, gboolean reset)
av_free (ffmpegdec->context->extradata);
ffmpegdec->context->extradata = NULL;
}
if (ffmpegdec->context->slice_offset) {
g_free (ffmpegdec->context->slice_offset);
ffmpegdec->context->slice_offset = NULL;
}
if (reset) {
if (avcodec_get_context_defaults3 (ffmpegdec->context,
oclass->in_plugin) < 0) {
......@@ -362,23 +358,10 @@ gst_ffmpegviddec_open (GstFFMpegVidDec * ffmpegdec)
ffmpegdec->stride[i] = -1;
ffmpegdec->opened = TRUE;
ffmpegdec->is_realvideo = FALSE;
GST_LOG_OBJECT (ffmpegdec, "Opened libav codec %s, id %d",
oclass->in_plugin->name, oclass->in_plugin->id);
switch (oclass->in_plugin->id) {
case AV_CODEC_ID_RV10:
case AV_CODEC_ID_RV30:
case AV_CODEC_ID_RV20:
case AV_CODEC_ID_RV40:
ffmpegdec->is_realvideo = TRUE;
break;
default:
GST_LOG_OBJECT (ffmpegdec, "Parser deactivated for format");
break;
}
gst_ffmpegviddec_context_set_flags (ffmpegdec->context,
CODEC_FLAG_OUTPUT_CORRUPT, ffmpegdec->output_corrupt);
......@@ -815,7 +798,7 @@ gst_ffmpegviddec_get_buffer2 (AVCodecContext * context, AVFrame * picture,
/* Fill avpicture */
if (!gst_video_frame_map (&dframe->vframe, &ffmpegdec->pool_info,
dframe->buffer, GST_MAP_READWRITE))
goto invalid_frame;
goto map_failed;
dframe->mapped = TRUE;
for (c = 0; c < AV_NUM_DATA_POINTERS; c++) {
......@@ -850,30 +833,13 @@ gst_ffmpegviddec_get_buffer2 (AVCodecContext * context, AVFrame * picture,
return 0;
/* fallbacks */
no_dr:
{
GST_LOG_OBJECT (ffmpegdec, "direct rendering disabled, fallback alloc");
goto fallback;
}
alloc_failed:
{
/* alloc default buffer when we can't get one from downstream */
GST_LOG_OBJECT (ffmpegdec, "alloc failed, fallback alloc");
goto fallback;
}
invalid_frame:
{
/* alloc default buffer when we can't get one from downstream */
GST_LOG_OBJECT (ffmpegdec, "failed to map frame, fallback alloc");
gst_buffer_replace (&dframe->buffer, NULL);
goto fallback;
}
fallback:
{
int c;
int ret = avcodec_default_get_buffer2 (context, picture, flags);
GST_LOG_OBJECT (ffmpegdec, "direct rendering disabled, fallback alloc");
for (c = 0; c < AV_NUM_DATA_POINTERS; c++) {
ffmpegdec->stride[c] = picture->linesize[c];
}
......@@ -893,6 +859,21 @@ fallback:
return ret;
}
alloc_failed:
{
GST_ELEMENT_ERROR (ffmpegdec, RESOURCE, FAILED,
("Unable to allocate memory"),
("The downstream pool failed to allocated buffer."));
return -1;
}
map_failed:
{
GST_ELEMENT_ERROR (ffmpegdec, RESOURCE, OPEN_READ_WRITE,
("Cannot access memory for read and write operation."),
("The video memory allocated from downstream pool could not mapped for"
"read and write."));
return -1;
}
duplicate_frame:
{
GST_WARNING_OBJECT (ffmpegdec, "already alloc'ed output buffer for frame");
......@@ -1227,7 +1208,7 @@ get_output_buffer (GstFFMpegVidDec * ffmpegdec, GstVideoCodecFrame * frame)
info = &ffmpegdec->output_state->info;
if (!gst_video_frame_map (&vframe, info, frame->output_buffer,
GST_MAP_READ | GST_MAP_WRITE))
goto alloc_failed;
goto map_failed;
for (c = 0; c < AV_NUM_DATA_POINTERS; c++) {
if (c < GST_VIDEO_INFO_N_PLANES (info)) {
......@@ -1255,7 +1236,17 @@ get_output_buffer (GstFFMpegVidDec * ffmpegdec, GstVideoCodecFrame * frame)
/* special cases */
alloc_failed:
{
GST_DEBUG_OBJECT (ffmpegdec, "allocation failed");
GST_ELEMENT_ERROR (ffmpegdec, RESOURCE, FAILED,
("Unable to allocate memory"),
("The downstream pool failed to allocated buffer."));
return ret;
}
map_failed:
{
GST_ELEMENT_ERROR (ffmpegdec, RESOURCE, OPEN_READ_WRITE,
("Cannot access memory for read and write operation."),
("The video memory allocated from downstream pool could not mapped for"
"read and write."));
return ret;
}
not_negotiated:
......@@ -1306,24 +1297,6 @@ gst_ffmpegviddec_video_frame (GstFFMpegVidDec * ffmpegdec,
* else we might skip a reference frame */
gst_ffmpegviddec_do_qos (ffmpegdec, frame, &mode_switch);
if (ffmpegdec->is_realvideo && data != NULL) {
gint slice_count;
gint i;
/* setup the slice table for realvideo */
if (ffmpegdec->context->slice_offset == NULL)
ffmpegdec->context->slice_offset = g_malloc (sizeof (guint32) * 1000);
slice_count = (*data++) + 1;
ffmpegdec->context->slice_count = slice_count;
for (i = 0; i < slice_count; i++) {
data += 4;
ffmpegdec->context->slice_offset[i] = GST_READ_UINT32_LE (data);
data += 4;
}
}
if (frame) {
/* save reference to the timing info */
ffmpegdec->context->reordered_opaque = (gint64) frame->system_frame_number;
......@@ -1408,6 +1381,16 @@ gst_ffmpegviddec_video_frame (GstFFMpegVidDec * ffmpegdec,
*ret = get_output_buffer (ffmpegdec, out_frame);
gst_buffer_unref (tmp);
}
#ifndef G_DISABLE_ASSERT
else {
GstVideoMeta *vmeta = gst_buffer_get_video_meta (out_frame->output_buffer);
if (vmeta) {
GstVideoInfo *info = &ffmpegdec->output_state->info;
g_assert (vmeta->width == GST_VIDEO_INFO_WIDTH (info));
g_assert (vmeta->height == GST_VIDEO_INFO_HEIGHT (info));
}
}
#endif
gst_object_unref (pool);
if (G_UNLIKELY (*ret != GST_FLOW_OK))
......@@ -1835,10 +1818,13 @@ gst_ffmpegviddec_decide_allocation (GstVideoDecoder * decoder, GstQuery * query)
/* If we have videometa, we never have to copy */
if (have_videometa && have_pool && have_alignment &&
gst_ffmpegviddec_can_direct_render (ffmpegdec)) {
gst_ffmpegvideodec_prepare_dr_pool (ffmpegdec, pool, &state->info, config);
GstStructure *config_copy = gst_structure_copy (config);
gst_ffmpegvideodec_prepare_dr_pool (ffmpegdec, pool, &state->info,
config_copy);
/* FIXME validate and retry */
if (gst_buffer_pool_set_config (pool, config)) {
if (gst_buffer_pool_set_config (pool, config_copy)) {
GstFlowReturn ret;
GstBuffer *tmp;
......@@ -1863,16 +1849,20 @@ gst_ffmpegviddec_decide_allocation (GstVideoDecoder * decoder, GstQuery * query)
gst_object_unref (ffmpegdec->internal_pool);
ffmpegdec->internal_pool = gst_object_ref (pool);
ffmpegdec->pool_info = state->info;
gst_structure_free (config);
goto done;
}
}
}
}
if (have_videometa && ffmpegdec->internal_pool) {
if (have_videometa && ffmpegdec->internal_pool
&& ffmpegdec->pool_width == state->info.width
&& ffmpegdec->pool_height == state->info.height) {
update_pool = TRUE;
gst_object_unref (pool);
pool = gst_object_ref (ffmpegdec->internal_pool);
gst_structure_free (config);
goto done;
}
......@@ -1884,6 +1874,8 @@ gst_ffmpegviddec_decide_allocation (GstVideoDecoder * decoder, GstQuery * query)
if (gst_buffer_pool_config_validate_params (config, state->caps, size, min,
max)) {
working_pool = gst_buffer_pool_set_config (pool, config);
} else {
gst_structure_free (config);
}
if (!working_pool) {
......
......@@ -64,8 +64,6 @@ struct _GstFFMpegVidDec
int max_threads;
gboolean output_corrupt;
gboolean is_realvideo;
GstCaps *last_caps;
/* Internally used for direct rendering */
......
......@@ -626,6 +626,7 @@ gst_ffmpegvidenc_handle_frame (GstVideoEncoder * encoder,
GST_ERROR_OBJECT (encoder, "Failed to map input buffer");
gst_buffer_unref (buffer_info->buffer);
g_slice_free (BufferInfo, buffer_info);
gst_video_codec_frame_unref (frame);
return GST_FLOW_ERROR;
}
......@@ -665,7 +666,10 @@ gst_ffmpegvidenc_handle_frame (GstVideoEncoder * encoder,
/* Encoder needs more data */
if (!have_data)
{
gst_video_codec_frame_unref (frame);
return GST_FLOW_OK;
}
/* save stats info if there is some as well as a stats file */
if (ffmpegenc->file && ffmpegenc->context->stats_out)
......@@ -752,7 +756,7 @@ gst_ffmpegvidenc_flush_buffers (GstFFMpegVidEnc * ffmpegenc, gboolean send)
if (send && have_data) {
outbuf =
gst_buffer_new_wrapped_full (GST_MEMORY_FLAG_READONLY, pkt->data,
pkt->size, 0, pkt->size, pkt->data, gst_ffmpegvidenc_free_avpacket);
pkt->size, 0, pkt->size, pkt, gst_ffmpegvidenc_free_avpacket);
frame->output_buffer = outbuf;
if (ffmpegenc->context->coded_frame->key_frame)
......
......@@ -32,6 +32,46 @@ colorspace conversion elements.
</GitRepository>
</repository>
<release>
<Version>
<revision>1.6.4</revision>
<branch>1.6</branch>
<name></name>
<created>2016-04-14</created>
<file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-libav/gst-libav-1.6.4.tar.xz" />
</Version>
</release>
<release>
<Version>
<revision>1.6.3</revision>
<branch>1.6</branch>
<name></name>
<created>2016-01-20</created>
<file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-libav/gst-libav-1.6.3.tar.xz" />
</Version>
</release>
<release>
<Version>
<revision>1.6.2</revision>
<branch>1.6</branch>
<name></name>
<created>2015-12-14</created>
<file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-libav/gst-libav-1.6.2.tar.xz" />
</Version>
</release>
<release>
<Version>
<revision>1.6.1</revision>
<branch>1.6</branch>
<name></name>
<created>2015-10-30</created>
<file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-libav/gst-libav-1.6.1.tar.xz" />
</Version>
</release>
<release>
<Version>
<revision>1.6.0</revision>
......
libav @ af21d609
Subproject commit b72c184194b92786373c420f2820c077f34de64d
Subproject commit af21d609a0ddeeddad4fdefecb19fd4e13744f80