summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--src/libffmpeg/ff_video_decoder.c10
-rw-r--r--src/libffmpeg/ffmpeg_encoder.c2
3 files changed, 10 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index a06625e22..a4af277af 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -62,7 +62,7 @@ xine-lib (1.1.9) (unreleased)
This requires conversion to UTF-8 of entities with codes >= 128.
* Fixed ATSC support. [Bug 1749508]
* Fixed a possible DVB plugin crash when switching channels.
- * Fixed ogg demuxer to not discard data at the end of the stream.
+ * Fixed a crash closing the frontend. [Bug FS#3]
* Fixed deadlock on ao_close while paused.
* Nicer wakeup behaviour, using select instead of nanosleep (800 -> 100
wakeups/s).
@@ -70,6 +70,8 @@ xine-lib (1.1.9) (unreleased)
but not played yet.
* Fixed a race condition between ao_loop and ao_close to not lose the last
buffer.
+ * DXR3 encoding with external ffmpeg should be fixed now.
+ (This was broken by ffmpeg revision 9283).
xine-lib (1.1.8)
* Send a channel-changed event to the frontend when receiving the SYNC
diff --git a/src/libffmpeg/ff_video_decoder.c b/src/libffmpeg/ff_video_decoder.c
index a941481ae..0f63df738 100644
--- a/src/libffmpeg/ff_video_decoder.c
+++ b/src/libffmpeg/ff_video_decoder.c
@@ -213,12 +213,14 @@ static void release_buffer(struct AVCodecContext *context, AVFrame *av_frame){
ff_video_decoder_t *this = (ff_video_decoder_t *)context->opaque;
if (av_frame->type == FF_BUFFER_TYPE_USER) {
- vo_frame_t *img = (vo_frame_t *)av_frame->opaque;
+ if ( av_frame->opaque ) {
+ vo_frame_t *img = (vo_frame_t *)av_frame->opaque;
+
+ img->free(img);
+ }
+
xine_list_iterator_t it;
- assert(av_frame->opaque);
- img->free(img);
-
it = xine_list_find(this->dr1_frames, av_frame);
assert(it);
if( it != NULL )
diff --git a/src/libffmpeg/ffmpeg_encoder.c b/src/libffmpeg/ffmpeg_encoder.c
index d9c4ccf5d..7fe65c7fa 100644
--- a/src/libffmpeg/ffmpeg_encoder.c
+++ b/src/libffmpeg/ffmpeg_encoder.c
@@ -70,7 +70,7 @@ int dxr3_encoder_init(dxr3_driver_t *drv)
lavc_data_t* this;
avcodec_init();
- register_avcodec(&mpeg1video_encoder);
+ avcodec_register_all();
lprintf("lavc init , version %x\n", avcodec_version());
this = xine_xmalloc(sizeof(lavc_data_t));
if (!this) return 0;