|
|
|
@ -71,7 +71,7 @@ int ff_vorbis_len2vlc(uint8_t *bits, uint32_t *codes, unsigned num) |
|
|
|
|
|
|
|
|
|
codes[p] = 0; |
|
|
|
|
if (bits[p] > 32) |
|
|
|
|
return 1; |
|
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
|
for (i = 0; i < bits[p]; ++i) |
|
|
|
|
exit_at_level[i+1] = 1 << i; |
|
|
|
|
|
|
|
|
@ -87,7 +87,7 @@ int ff_vorbis_len2vlc(uint8_t *bits, uint32_t *codes, unsigned num) |
|
|
|
|
|
|
|
|
|
for (; p < num; ++p) { |
|
|
|
|
if (bits[p] > 32) |
|
|
|
|
return 1; |
|
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
|
if (bits[p] == 0) |
|
|
|
|
continue; |
|
|
|
|
// find corresponding exit(node which the tree can grow further from)
|
|
|
|
@ -95,7 +95,7 @@ int ff_vorbis_len2vlc(uint8_t *bits, uint32_t *codes, unsigned num) |
|
|
|
|
if (exit_at_level[i]) |
|
|
|
|
break; |
|
|
|
|
if (!i) // overspecified tree
|
|
|
|
|
return 1; |
|
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
|
code = exit_at_level[i]; |
|
|
|
|
exit_at_level[i] = 0; |
|
|
|
|
// construct code (append 0s to end) and introduce new exits
|
|
|
|
@ -116,7 +116,7 @@ int ff_vorbis_len2vlc(uint8_t *bits, uint32_t *codes, unsigned num) |
|
|
|
|
//no exits should be left (underspecified tree - ie. unused valid vlcs - not allowed by SPEC)
|
|
|
|
|
for (p = 1; p < 33; p++) |
|
|
|
|
if (exit_at_level[p]) |
|
|
|
|
return 1; |
|
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
|
|
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|