1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-12-23 12:43:46 +02:00

dirac: add more parse codes from the specifications

The specs define some more overlapping and some rarely used parse codes
which were missing.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
This commit is contained in:
Rostislav Pehlivanov 2016-01-21 16:43:58 +00:00
parent 033e7dbd31
commit 053900ca4c
2 changed files with 12 additions and 4 deletions

View File

@ -52,6 +52,13 @@ enum DiracParseCodes {
DIRAC_PCODE_PICTURE_RAW = 0x48,
DIRAC_PCODE_PICTURE_LOW_DEL = 0xC8,
DIRAC_PCODE_PICTURE_HQ = 0xE8,
DIRAC_PCODE_INTER_NOREF_CO1 = 0x0A,
DIRAC_PCODE_INTER_NOREF_CO2 = 0x09,
DIRAC_PCODE_INTER_REF_CO1 = 0x0D,
DIRAC_PCODE_INTER_REF_CO2 = 0x0E,
DIRAC_PCODE_INTRA_REF_CO = 0x0C,
DIRAC_PCODE_INTRA_REF_RAW = 0x4C,
DIRAC_PCODE_INTRA_REF_PICT = 0xCC,
DIRAC_PCODE_MAGIC = 0x42424344,
};

View File

@ -103,7 +103,8 @@ static int unpack_parse_unit(DiracParseUnit *pu, DiracParseContext *pc,
int i;
int8_t *start;
static const uint8_t valid_pu_types[] = {
0x00, 0x10, 0x20, 0x30, 0x08, 0x48, 0xC8, 0xE8, 0x0A, 0x0C, 0x0D, 0x0E
0x00, 0x10, 0x20, 0x30, 0x08, 0x48, 0xC8, 0xE8, 0x0A, 0x0C, 0x0D, 0x0E,
0x4C, 0x09, 0xCC, 0x88, 0xCB
};
if (offset < 0 || pc->index - 13 < offset)
@ -116,13 +117,13 @@ static int unpack_parse_unit(DiracParseUnit *pu, DiracParseContext *pc,
pu->prev_pu_offset = AV_RB32(start + 9);
/* Check for valid parse code */
for (i = 0; i < 12; i++)
for (i = 0; i < 17; i++)
if (valid_pu_types[i] == pu->pu_type)
break;
if (i == 12)
if (i == 17)
return 0;
if (pu->pu_type == 0x10 && pu->next_pu_offset == 0)
if (pu->pu_type == 0x10 && pu->next_pu_offset == 0x00)
pu->next_pu_offset = 13; /* The length of a parse info header */
/* Check if the parse offsets are somewhat sane */