aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/ivi_common.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2013-07-05 11:49:56 +0200
committerMichael Niedermayer <michaelni@gmx.at>2013-07-05 11:50:46 +0200
commit0e2056056fc8d70046c6e3a83c94c3f1b4ea70a4 (patch)
treebac78bdde239f80f3ffbda34dd02d239b6eb2893 /libavcodec/ivi_common.c
parentcced6f4d58168096f13a4d34555754717979429d (diff)
parentf6f36ca8ca1b2526d3abff7d7c627322d3bce912 (diff)
downloadffmpeg-0e2056056fc8d70046c6e3a83c94c3f1b4ea70a4.tar.gz
Merge commit 'f6f36ca8ca1b2526d3abff7d7c627322d3bce912'
* commit 'f6f36ca8ca1b2526d3abff7d7c627322d3bce912': indeo: Refactor ff_ivi_dec_huff_desc Conflicts: libavcodec/ivi_common.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/ivi_common.c')
-rw-r--r--libavcodec/ivi_common.c62
1 files changed, 32 insertions, 30 deletions
diff --git a/libavcodec/ivi_common.c b/libavcodec/ivi_common.c
index 32da5c651e..f4f2bf2fe4 100644
--- a/libavcodec/ivi_common.c
+++ b/libavcodec/ivi_common.c
@@ -156,41 +156,43 @@ int ff_ivi_dec_huff_desc(GetBitContext *gb, int desc_coded, int which_tab,
if (!desc_coded) {
/* select default table */
huff_tab->tab = (which_tab) ? &ivi_blk_vlc_tabs[7]
- : &ivi_mb_vlc_tabs [7];
- } else {
- huff_tab->tab_sel = get_bits(gb, 3);
- if (huff_tab->tab_sel == 7) {
- /* custom huffman table (explicitly encoded) */
- new_huff.num_rows = get_bits(gb, 4);
- if (!new_huff.num_rows) {
- av_log(avctx, AV_LOG_ERROR, "Empty custom Huffman table!\n");
- return AVERROR_INVALIDDATA;
- }
+ : &ivi_mb_vlc_tabs [7];
+ return 0;
+ }
- for (i = 0; i < new_huff.num_rows; i++)
- new_huff.xbits[i] = get_bits(gb, 4);
+ huff_tab->tab_sel = get_bits(gb, 3);
+ if (huff_tab->tab_sel == 7) {
+ /* custom huffman table (explicitly encoded) */
+ new_huff.num_rows = get_bits(gb, 4);
+ if (!new_huff.num_rows) {
+ av_log(avctx, AV_LOG_ERROR, "Empty custom Huffman table!\n");
+ return AVERROR_INVALIDDATA;
+ }
- /* Have we got the same custom table? Rebuild if not. */
- if (ivi_huff_desc_cmp(&new_huff, &huff_tab->cust_desc) || !huff_tab->cust_tab.table) {
- ivi_huff_desc_copy(&huff_tab->cust_desc, &new_huff);
+ for (i = 0; i < new_huff.num_rows; i++)
+ new_huff.xbits[i] = get_bits(gb, 4);
- if (huff_tab->cust_tab.table)
- ff_free_vlc(&huff_tab->cust_tab);
- result = ivi_create_huff_from_desc(&huff_tab->cust_desc,
- &huff_tab->cust_tab, 0);
- if (result) {
- huff_tab->cust_desc.num_rows = 0; // reset faulty description
- av_log(avctx, AV_LOG_ERROR,
- "Error while initializing custom vlc table!\n");
- return result;
- }
+ /* Have we got the same custom table? Rebuild if not. */
+ if (ivi_huff_desc_cmp(&new_huff, &huff_tab->cust_desc) || !huff_tab->cust_tab.table) {
+ ivi_huff_desc_copy(&huff_tab->cust_desc, &new_huff);
+
+ if (huff_tab->cust_tab.table)
+ ff_free_vlc(&huff_tab->cust_tab);
+ result = ivi_create_huff_from_desc(&huff_tab->cust_desc,
+ &huff_tab->cust_tab, 0);
+ if (result) {
+ // reset faulty description
+ huff_tab->cust_desc.num_rows = 0;
+ av_log(avctx, AV_LOG_ERROR,
+ "Error while initializing custom vlc table!\n");
+ return result;
}
- huff_tab->tab = &huff_tab->cust_tab;
- } else {
- /* select one of predefined tables */
- huff_tab->tab = (which_tab) ? &ivi_blk_vlc_tabs[huff_tab->tab_sel]
- : &ivi_mb_vlc_tabs [huff_tab->tab_sel];
}
+ huff_tab->tab = &huff_tab->cust_tab;
+ } else {
+ /* select one of predefined tables */
+ huff_tab->tab = (which_tab) ? &ivi_blk_vlc_tabs[huff_tab->tab_sel]
+ : &ivi_mb_vlc_tabs [huff_tab->tab_sel];
}
return 0;