summaryrefslogtreecommitdiff
path: root/libavcodec/h264_parse.h
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2016-03-21 16:14:31 +0100
committerAnton Khirnov <anton@khirnov.net>2016-03-28 09:48:31 +0200
commite481458bc308ee838deaeacac51929514762e7a7 (patch)
tree5ce061d8d1ffa62aded7fdac43e95ee00d8e5ea9 /libavcodec/h264_parse.h
parent90ed6c5cf7f236bc9efb47c97b40358c666d1386 (diff)
downloadffmpeg-e481458bc308ee838deaeacac51929514762e7a7.tar.gz
h264: factor out pred weight table parsing into a separate file
This will allow decoupling the parser from the decoder.
Diffstat (limited to 'libavcodec/h264_parse.h')
-rw-r--r--libavcodec/h264_parse.h48
1 files changed, 48 insertions, 0 deletions
diff --git a/libavcodec/h264_parse.h b/libavcodec/h264_parse.h
new file mode 100644
index 0000000000..7bdce04a3b
--- /dev/null
+++ b/libavcodec/h264_parse.h
@@ -0,0 +1,48 @@
+/*
+ * This file is part of Libav.
+ *
+ * Libav 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,
+ * 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+/**
+ * @file
+ * H.264 decoder/parser shared code
+ */
+
+#ifndef AVCODEC_H264_PARSE_H
+#define AVCODEC_H264_PARSE_H
+
+#include "get_bits.h"
+
+typedef struct H264PredWeightTable {
+ int use_weight;
+ int use_weight_chroma;
+ int luma_log2_weight_denom;
+ int chroma_log2_weight_denom;
+ int luma_weight_flag[2]; ///< 7.4.3.2 luma_weight_lX_flag
+ int chroma_weight_flag[2]; ///< 7.4.3.2 chroma_weight_lX_flag
+ // The following 2 can be changed to int8_t but that causes 10cpu cycles speedloss
+ int luma_weight[48][2][2];
+ int chroma_weight[48][2][2][2];
+ int implicit_weight[48][48][2];
+} H264PredWeightTable;
+
+struct SPS;
+
+int ff_h264_pred_weight_table(GetBitContext *gb, const struct SPS *sps,
+ const int *ref_count, int slice_type_nos,
+ H264PredWeightTable *pwt);
+
+#endif /* AVCODEC_H264_PARSE_H */