mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-24 17:20:36 +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>
|
2007-05-02 Edward Hervey <edward@fluendo.com>
|
||||||
|
|
||||||
* ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_init),
|
* ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_init),
|
||||||
|
|
|
@ -63,6 +63,17 @@ gst_ffmpeg_avcodec_close (AVCodecContext *avctx) {
|
||||||
return ret;
|
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
|
#ifndef GST_DISABLE_GST_DEBUG
|
||||||
static void
|
static void
|
||||||
gst_ffmpeg_log_callback (void * ptr, int level, const char * fmt, va_list vl)
|
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_open (AVCodecContext *avctx, AVCodec *codec);
|
||||||
int gst_ffmpeg_avcodec_close (AVCodecContext *avctx);
|
int gst_ffmpeg_avcodec_close (AVCodecContext *avctx);
|
||||||
|
int gst_ffmpeg_av_find_stream_info(AVFormatContext *ic);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
|
|
|
@ -1032,7 +1032,7 @@ gst_ffmpegdemux_open (GstFFMpegDemux * demux)
|
||||||
if (res < 0)
|
if (res < 0)
|
||||||
goto open_failed;
|
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);
|
GST_DEBUG_OBJECT (demux, "av_find_stream_info returned %d", res);
|
||||||
if (res < 0)
|
if (res < 0)
|
||||||
goto no_info;
|
goto no_info;
|
||||||
|
|
Loading…
Reference in a new issue