mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-01-29 02:33:04 +00:00
Merge commit 'c34a96a5ddfa390ce2a352eca79190766c9056d4'
* commit 'c34a96a5ddfa390ce2a352eca79190766c9056d4':
dxa: fix decoding of first I-frame by separating I/P-frame decoding
Conflicts:
libavcodec/dxa.c
See: 186e47ef6d
Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
commit
66722b4ba9
@ -263,18 +263,26 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPac
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
case 3:
|
|
||||||
case 4:
|
case 4:
|
||||||
|
frame->key_frame = 1;
|
||||||
|
frame->pict_type = AV_PICTURE_TYPE_I;
|
||||||
|
for (j = 0; j < avctx->height; j++) {
|
||||||
|
memcpy(outptr, srcptr, avctx->width);
|
||||||
|
outptr += stride;
|
||||||
|
srcptr += avctx->width;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
case 5:
|
case 5:
|
||||||
if (!tmpptr && (compr & 1)) {
|
if (!tmpptr) {
|
||||||
av_log(avctx, AV_LOG_ERROR, "Missing reference frame.\n");
|
av_log(avctx, AV_LOG_ERROR, "Missing reference frame.\n");
|
||||||
if (!(avctx->flags2 & CODEC_FLAG2_SHOW_ALL))
|
if (!(avctx->flags2 & CODEC_FLAG2_SHOW_ALL))
|
||||||
return AVERROR_INVALIDDATA;
|
return AVERROR_INVALIDDATA;
|
||||||
}
|
}
|
||||||
frame->key_frame = !(compr & 1);
|
frame->key_frame = 0;
|
||||||
frame->pict_type = (compr & 1) ? AV_PICTURE_TYPE_P : AV_PICTURE_TYPE_I;
|
frame->pict_type = AV_PICTURE_TYPE_P;
|
||||||
for(j = 0; j < avctx->height; j++){
|
for (j = 0; j < avctx->height; j++) {
|
||||||
if((compr & 1) && tmpptr){
|
if(tmpptr){
|
||||||
for(i = 0; i < avctx->width; i++)
|
for(i = 0; i < avctx->width; i++)
|
||||||
outptr[i] = srcptr[i] ^ tmpptr[i];
|
outptr[i] = srcptr[i] ^ tmpptr[i];
|
||||||
tmpptr += stride;
|
tmpptr += stride;
|
||||||
|
Loading…
Reference in New Issue
Block a user