mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-24 13:56:33 +02:00
vda: fix h264 decoding for avcC,vda wants the entire buffer
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
764f87b6ab
commit
3e53211a57
@ -1588,7 +1588,7 @@ again:
|
|||||||
decode_postinit(h, nal_index >= nals_needed);
|
decode_postinit(h, nal_index >= nals_needed);
|
||||||
|
|
||||||
if (h->avctx->hwaccel &&
|
if (h->avctx->hwaccel &&
|
||||||
(ret = h->avctx->hwaccel->start_frame(h->avctx, NULL, 0)) < 0)
|
(ret = h->avctx->hwaccel->start_frame(h->avctx, buf, buf_size)) < 0)
|
||||||
return ret;
|
return ret;
|
||||||
if (CONFIG_H264_VDPAU_DECODER &&
|
if (CONFIG_H264_VDPAU_DECODER &&
|
||||||
h->avctx->codec->capabilities & CODEC_CAP_HWACCEL_VDPAU)
|
h->avctx->codec->capabilities & CODEC_CAP_HWACCEL_VDPAU)
|
||||||
|
@ -320,9 +320,20 @@ static int vda_h264_start_frame(AVCodecContext *avctx,
|
|||||||
uint32_t size)
|
uint32_t size)
|
||||||
{
|
{
|
||||||
VDAContext *vda = avctx->internal->hwaccel_priv_data;
|
VDAContext *vda = avctx->internal->hwaccel_priv_data;
|
||||||
|
H264Context *h = avctx->priv_data;
|
||||||
|
|
||||||
vda->bitstream_size = 0;
|
if (h->is_avc == 1) {
|
||||||
|
void *tmp;
|
||||||
|
vda->bitstream_size = 0;
|
||||||
|
tmp = av_fast_realloc(vda->bitstream,
|
||||||
|
&vda->allocated_size,
|
||||||
|
size);
|
||||||
|
vda->bitstream = tmp;
|
||||||
|
memcpy(vda->bitstream, buffer, size);
|
||||||
|
vda->bitstream_size = size;
|
||||||
|
} else {
|
||||||
|
vda->bitstream_size = 0;
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -333,6 +344,9 @@ static int vda_h264_decode_slice(AVCodecContext *avctx,
|
|||||||
VDAContext *vda = avctx->internal->hwaccel_priv_data;
|
VDAContext *vda = avctx->internal->hwaccel_priv_data;
|
||||||
void *tmp;
|
void *tmp;
|
||||||
|
|
||||||
|
if (h->is_avc == 1)
|
||||||
|
return 0;
|
||||||
|
|
||||||
tmp = av_fast_realloc(vda->bitstream,
|
tmp = av_fast_realloc(vda->bitstream,
|
||||||
&vda->allocated_size,
|
&vda->allocated_size,
|
||||||
vda->bitstream_size + size + 4);
|
vda->bitstream_size + size + 4);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user