mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-19 23:06:49 +00:00
ext/ffmpeg/: Protect calls to ffmpeg functions that will implicitly call avcodec_open/close with the avcodec mutex.
Original commit message from CVS: * ext/ffmpeg/gstffmpeg.c: (gst_ffmpeg_av_find_stream_info): * ext/ffmpeg/gstffmpeg.h: * ext/ffmpeg/gstffmpegdemux.c: (gst_ffmpegdemux_open): Protect calls to ffmpeg functions that will implicitly call avcodec_open/close with the avcodec mutex. Fixes #433245
This commit is contained in:
parent
0fcacdde8c
commit
cc9a75adcb
4 changed files with 22 additions and 1 deletions
|
@ -1,3 +1,12 @@
|
|||
2007-05-09 Edward Hervey <edward@fluendo.com>
|
||||
|
||||
* ext/ffmpeg/gstffmpeg.c: (gst_ffmpeg_av_find_stream_info):
|
||||
* ext/ffmpeg/gstffmpeg.h:
|
||||
* ext/ffmpeg/gstffmpegdemux.c: (gst_ffmpegdemux_open):
|
||||
Protect calls to ffmpeg functions that will implicitly call
|
||||
avcodec_open/close with the avcodec mutex.
|
||||
Fixes #433245
|
||||
|
||||
2007-05-02 Edward Hervey <edward@fluendo.com>
|
||||
|
||||
* ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_init),
|
||||
|
|
|
@ -63,6 +63,17 @@ gst_ffmpeg_avcodec_close (AVCodecContext *avctx) {
|
|||
return ret;
|
||||
}
|
||||
|
||||
int
|
||||
gst_ffmpeg_av_find_stream_info(AVFormatContext *ic) {
|
||||
int ret;
|
||||
|
||||
g_static_mutex_lock (&gst_avcodec_mutex);
|
||||
ret = av_find_stream_info (ic);
|
||||
g_static_mutex_unlock (&gst_avcodec_mutex);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#ifndef GST_DISABLE_GST_DEBUG
|
||||
static void
|
||||
gst_ffmpeg_log_callback (void * ptr, int level, const char * fmt, va_list vl)
|
||||
|
|
|
@ -53,6 +53,7 @@ extern gboolean gst_ffmpegdeinterlace_register (GstPlugin * plugin);
|
|||
|
||||
int gst_ffmpeg_avcodec_open (AVCodecContext *avctx, AVCodec *codec);
|
||||
int gst_ffmpeg_avcodec_close (AVCodecContext *avctx);
|
||||
int gst_ffmpeg_av_find_stream_info(AVFormatContext *ic);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
|
|
@ -1032,7 +1032,7 @@ gst_ffmpegdemux_open (GstFFMpegDemux * demux)
|
|||
if (res < 0)
|
||||
goto open_failed;
|
||||
|
||||
res = av_find_stream_info (demux->context);
|
||||
res = gst_ffmpeg_av_find_stream_info (demux->context);
|
||||
GST_DEBUG_OBJECT (demux, "av_find_stream_info returned %d", res);
|
||||
if (res < 0)
|
||||
goto no_info;
|
||||
|
|
Loading…
Reference in a new issue