summaryrefslogtreecommitdiff
path: root/libavcodec/mpeg4video.h
diff options
context:
space:
mode:
authorKieran Kunhya <kierank@obe.tv>2017-12-29 15:42:14 +0000
committerKieran Kunhya <kierank@obe.tv>2018-04-02 13:06:23 +0100
commitf9d3841ae6147eaa51c57c574cd81e9ce9566e3a (patch)
treedd24a952bd115ed8596b952999aad07dcc36742e /libavcodec/mpeg4video.h
parent699fa8f382704acdbdf720042dd7b21df2eb7558 (diff)
mpeg4video: Add support for MPEG-4 Simple Studio Profile.
This is a profile supporting > 8-bit video and has a higher quality DCT
Diffstat (limited to 'libavcodec/mpeg4video.h')
-rw-r--r--libavcodec/mpeg4video.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/libavcodec/mpeg4video.h b/libavcodec/mpeg4video.h
index 6672c6dd66..f974792887 100644
--- a/libavcodec/mpeg4video.h
+++ b/libavcodec/mpeg4video.h
@@ -61,6 +61,10 @@
#define GOP_STARTCODE 0x1B3
#define VISUAL_OBJ_STARTCODE 0x1B5
#define VOP_STARTCODE 0x1B6
+#define SLICE_STARTCODE 0x1B7
+#define EXT_STARTCODE 0x1B8
+
+#define QUANT_MATRIX_EXT_ID 0x3
/* smaller packets likely don't contain a real frame */
#define MAX_NVOP_SIZE 19
@@ -108,8 +112,16 @@ typedef struct Mpeg4DecContext {
int cplx_estimation_trash_i;
int cplx_estimation_trash_p;
int cplx_estimation_trash_b;
+
+ VLC studio_intra_tab[12];
+ VLC studio_luma_dc;
+ VLC studio_chroma_dc;
+
+ int rgb;
} Mpeg4DecContext;
+static const uint8_t mpeg4_block_count[4] = {0, 6, 8, 12};
+
/* dc encoding for MPEG-4 */
extern const uint8_t ff_mpeg4_DCtab_lum[13][2];
extern const uint8_t ff_mpeg4_DCtab_chrom[13][2];
@@ -137,6 +149,10 @@ extern const uint16_t ff_mpeg4_resync_prefix[8];
extern const uint8_t ff_mpeg4_dc_threshold[8];
+extern const uint16_t ff_mpeg4_studio_dc_luma[19][2];
+extern const uint16_t ff_mpeg4_studio_dc_chroma[19][2];
+extern const uint16_t ff_mpeg4_studio_intra[12][22][2];
+
void ff_mpeg4_encode_mb(MpegEncContext *s,
int16_t block[6][64],
int motion_x, int motion_y);
@@ -155,6 +171,7 @@ void ff_clean_mpeg4_qscales(MpegEncContext *s);
int ff_mpeg4_decode_partitions(Mpeg4DecContext *ctx);
int ff_mpeg4_get_video_packet_prefix_length(MpegEncContext *s);
int ff_mpeg4_decode_video_packet_header(Mpeg4DecContext *ctx);
+int ff_mpeg4_decode_studio_slice_header(Mpeg4DecContext *ctx);
void ff_mpeg4_init_direct_mv(MpegEncContext *s);
void ff_mpeg4videodec_static_init(void);
int ff_mpeg4_workaround_bugs(AVCodecContext *avctx);