diff options
Diffstat (limited to 'libavcodec/dxva2_vc1.c')
-rw-r--r-- | libavcodec/dxva2_vc1.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/libavcodec/dxva2_vc1.c b/libavcodec/dxva2_vc1.c index 4af3ce8127..92c78fdf55 100644 --- a/libavcodec/dxva2_vc1.c +++ b/libavcodec/dxva2_vc1.c @@ -3,20 +3,20 @@ * * copyright (c) 2010 Laurent Aimar * - * This file is part of Libav. + * This file is part of FFmpeg. * - * Libav is free software; you can redistribute it and/or + * FFmpeg is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * - * Libav is distributed in the hope that it will be useful, + * FFmpeg is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software + * License along with FFmpeg; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ @@ -68,7 +68,7 @@ static void fill_picture_parameters(AVCodecContext *avctx, pp->bPicStructure |= 0x01; if (s->picture_structure & PICT_BOTTOM_FIELD) pp->bPicStructure |= 0x02; - pp->bSecondField = v->interlace && v->fcm != ILACE_FIELD && !s->first_field; + pp->bSecondField = v->interlace && v->fcm == ILACE_FIELD && v->second_field; pp->bPicIntra = s->pict_type == AV_PICTURE_TYPE_I || v->bi_type; pp->bPicBackwardPrediction = s->pict_type == AV_PICTURE_TYPE_B && !v->bi_type; pp->bBidirectionalAveragingMode = (1 << 7) | @@ -178,13 +178,16 @@ static int commit_bitstream_and_slice_buffer(AVCodecContext *avctx, if (FAILED(IDirectXVideoDecoder_GetBuffer(ctx->decoder, DXVA2_BitStreamDateBufferType, - &dxva_data, &dxva_size))) + (void **)&dxva_data, &dxva_size))) return -1; result = data_size <= dxva_size ? 0 : -1; if (!result) { - if (start_code_size > 0) + if (start_code_size > 0) { memcpy(dxva_data, start_code, start_code_size); + if (v->second_field) + dxva_data[3] = 0x0c; + } memcpy(dxva_data + start_code_size, ctx_pic->bitstream + slice->dwSliceDataLocation, slice_size); if (padding > 0) |