| /* /////////////////////////////////////////////////////////////////////// |
| // |
| // INTEL CORPORATION PROPRIETARY INFORMATION |
| // This software is supplied under the terms of a license agreement or |
| // nondisclosure agreement with Intel Corporation and may not be copied |
| // or disclosed except in accordance with the terms of that agreement. |
| // Copyright (c) 2008 Intel Corporation. All Rights Reserved. |
| // |
| // Description: Parses VC-1 syntax elements MVRANGE and DMVRANGE. |
| // |
| */ |
| |
| #include "vc1parse.h" |
| |
| /*------------------------------------------------------------------------------ |
| * Parse syntax element MVRANGE, which exists for main and advanced profiles. |
| *------------------------------------------------------------------------------ |
| */ |
| |
| vc1_Status vc1_MVRangeDecode(void* ctxt, vc1_Info *pInfo) |
| { |
| vc1_Status status = VC1_STATUS_OK; |
| vc1_metadata_t *md = &pInfo->metadata; |
| vc1_PictureLayerHeader *picLayerHeader = &pInfo->picLayerHeader; |
| |
| if (md->EXTENDED_MV == 1) |
| { |
| VC1_GET_BITS9(1, picLayerHeader->MVRANGE); |
| if (picLayerHeader->MVRANGE) |
| { |
| VC1_GET_BITS9(1, picLayerHeader->MVRANGE); |
| if (picLayerHeader->MVRANGE) |
| { |
| VC1_GET_BITS9(1, picLayerHeader->MVRANGE); |
| picLayerHeader->MVRANGE += 1; |
| } |
| picLayerHeader->MVRANGE += 1; |
| } |
| } |
| else |
| picLayerHeader->MVRANGE = 0; |
| |
| return status; |
| } |
| |
| /*------------------------------------------------------------------------------ |
| * Parse syntax element DMVRANGE. |
| *------------------------------------------------------------------------------ |
| */ |
| |
| vc1_Status vc1_DMVRangeDecode(void* ctxt, vc1_Info *pInfo) |
| { |
| vc1_Status status = VC1_STATUS_OK; |
| vc1_metadata_t *md = &pInfo->metadata; |
| vc1_PictureLayerHeader *picLayerHeader = &pInfo->picLayerHeader; |
| |
| if (md->EXTENDED_DMV == 1) |
| { |
| VC1_GET_BITS9(1, picLayerHeader->DMVRANGE); |
| if (picLayerHeader->DMVRANGE == 0) |
| picLayerHeader->DMVRANGE = VC1_DMVRANGE_NONE; |
| else |
| { |
| VC1_GET_BITS9(1, picLayerHeader->DMVRANGE); |
| if (picLayerHeader->DMVRANGE == 0) |
| picLayerHeader->DMVRANGE = VC1_DMVRANGE_HORIZONTAL_RANGE; |
| else |
| { |
| VC1_GET_BITS9(1, picLayerHeader->DMVRANGE); |
| if (picLayerHeader->DMVRANGE == 0) |
| picLayerHeader->DMVRANGE = VC1_DMVRANGE_VERTICAL_RANGE; |
| else |
| { |
| picLayerHeader->DMVRANGE = |
| VC1_DMVRANGE_HORIZONTAL_VERTICAL_RANGE; |
| } |
| } |
| } |
| } |
| |
| return status; |
| } |