mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
avcodec/h261dec: Make decoder init-threadsafe
Reviewed-by: Anton Khirnov <anton@khirnov.net> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
This commit is contained in:
parent
ed913fcb59
commit
7afc6d71a0
@ -26,6 +26,7 @@
|
||||
*/
|
||||
|
||||
#include "libavutil/avassert.h"
|
||||
#include "libavutil/thread.h"
|
||||
#include "avcodec.h"
|
||||
#include "mpeg_er.h"
|
||||
#include "mpegutils.h"
|
||||
@ -47,12 +48,8 @@ static VLC h261_mtype_vlc;
|
||||
static VLC h261_mv_vlc;
|
||||
static VLC h261_cbp_vlc;
|
||||
|
||||
static av_cold void h261_decode_init_vlc(H261Context *h)
|
||||
static av_cold void h261_decode_init_static(void)
|
||||
{
|
||||
static int done = 0;
|
||||
|
||||
if (!done) {
|
||||
done = 1;
|
||||
INIT_VLC_STATIC(&h261_mba_vlc, H261_MBA_VLC_BITS, 35,
|
||||
ff_h261_mba_bits, 1, 1,
|
||||
ff_h261_mba_code, 1, 1, 662);
|
||||
@ -66,11 +63,11 @@ static av_cold void h261_decode_init_vlc(H261Context *h)
|
||||
&ff_h261_cbp_tab[0][1], 2, 1,
|
||||
&ff_h261_cbp_tab[0][0], 2, 1, 512);
|
||||
INIT_FIRST_VLC_RL(ff_h261_rl_tcoeff, 552);
|
||||
}
|
||||
}
|
||||
|
||||
static av_cold int h261_decode_init(AVCodecContext *avctx)
|
||||
{
|
||||
static AVOnce init_static_once = AV_ONCE_INIT;
|
||||
H261Context *h = avctx->priv_data;
|
||||
MpegEncContext *const s = &h->s;
|
||||
|
||||
@ -81,10 +78,10 @@ static av_cold int h261_decode_init(AVCodecContext *avctx)
|
||||
s->low_delay = 1;
|
||||
avctx->pix_fmt = AV_PIX_FMT_YUV420P;
|
||||
|
||||
h261_decode_init_vlc(h);
|
||||
|
||||
h->gob_start_code_skipped = 0;
|
||||
|
||||
ff_thread_once(&init_static_once, h261_decode_init_static);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -684,6 +681,6 @@ AVCodec ff_h261_decoder = {
|
||||
.close = h261_decode_end,
|
||||
.decode = h261_decode_frame,
|
||||
.capabilities = AV_CODEC_CAP_DR1,
|
||||
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
|
||||
.caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP,
|
||||
.max_lowres = 3,
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user