/*
 * drivers/amvdec_ports/decoder/aml_mpeg4_parser.h
 *
 * Copyright (C) 2015 Amlogic, Inc. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program 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 General Public License for
 * more details.
 *
 */
#ifndef AVCODEC_MPEG4VIDEO_H
#define AVCODEC_MPEG4VIDEO_H

#include "../aml_vcodec_drv.h"
#include "../utils/common.h"
#ifdef CONFIG_AMLOGIC_MEDIA_V4L_SOFTWARE_PARSER
#include "../utils/pixfmt.h"
#endif

//mpeg4 profile
#define FF_PROFILE_MPEG4_SIMPLE                     0
#define FF_PROFILE_MPEG4_SIMPLE_SCALABLE            1
#define FF_PROFILE_MPEG4_CORE                       2
#define FF_PROFILE_MPEG4_MAIN                       3
#define FF_PROFILE_MPEG4_N_BIT                      4
#define FF_PROFILE_MPEG4_SCALABLE_TEXTURE           5
#define FF_PROFILE_MPEG4_SIMPLE_FACE_ANIMATION      6
#define FF_PROFILE_MPEG4_BASIC_ANIMATED_TEXTURE     7
#define FF_PROFILE_MPEG4_HYBRID                     8
#define FF_PROFILE_MPEG4_ADVANCED_REAL_TIME         9
#define FF_PROFILE_MPEG4_CORE_SCALABLE             10
#define FF_PROFILE_MPEG4_ADVANCED_CODING           11
#define FF_PROFILE_MPEG4_ADVANCED_CORE             12
#define FF_PROFILE_MPEG4_ADVANCED_SCALABLE_TEXTURE 13
#define FF_PROFILE_MPEG4_SIMPLE_STUDIO             14
#define FF_PROFILE_MPEG4_ADVANCED_SIMPLE           15

// shapes
#define RECT_SHAPE       0
#define BIN_SHAPE        1
#define BIN_ONLY_SHAPE   2
#define GRAY_SHAPE       3

#define SIMPLE_VO_TYPE           1
#define CORE_VO_TYPE             3
#define MAIN_VO_TYPE             4
#define NBIT_VO_TYPE             5
#define ARTS_VO_TYPE            10
#define ACE_VO_TYPE             12
#define SIMPLE_STUDIO_VO_TYPE   14
#define CORE_STUDIO_VO_TYPE     15
#define ADV_SIMPLE_VO_TYPE      17

#define VOT_VIDEO_ID 1
#define VOT_STILL_TEXTURE_ID 2

#define FF_PROFILE_UNKNOWN -99
#define FF_PROFILE_RESERVED -100

// aspect_ratio_info
#define EXTENDED_PAR 15

//vol_sprite_usage / sprite_enable
#define STATIC_SPRITE 1
#define GMC_SPRITE 2

#define MOTION_MARKER 0x1F001
#define DC_MARKER     0x6B001

#define VOS_STARTCODE        0x1B0
#define USER_DATA_STARTCODE  0x1B2
#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

#define IS_3IV1 0

#define CHROMA_420 1
#define CHROMA_422 2
#define CHROMA_444 3

#define FF_ASPECT_EXTENDED 15

#define AV_NOPTS_VALUE          (LONG_MIN)

/**
 * Return value for header parsers if frame is not coded.
 * */
#define FRAME_SKIPPED 100

enum AVPictureType {
    AV_PICTURE_TYPE_NONE = 0, ///< Undefined
    AV_PICTURE_TYPE_I,     ///< Intra
    AV_PICTURE_TYPE_P,     ///< Predicted
    AV_PICTURE_TYPE_B,     ///< Bi-dir predicted
    AV_PICTURE_TYPE_S,     ///< S(GMC)-VOP MPEG-4
    AV_PICTURE_TYPE_SI,    ///< Switching Intra
    AV_PICTURE_TYPE_SP,    ///< Switching Predicted
    AV_PICTURE_TYPE_BI,    ///< BI type
};

struct VLC {
	int bits;
	short (*table)[2]; ///< code, bits
	int table_size, table_allocated;
};

/**
 * MpegEncContext.
 */
struct MpegEncContext {
	struct mpeg4_dec_param *ctx;

	/* the following parameters must be initialized before encoding */
	int width, height;///< picture size. must be a multiple of 16
	int codec_tag;             ///< internal codec_tag upper case converted from avctx codec_tag
	int picture_number;       //FIXME remove, unclear definition

	/** matrix transmitted in the bitstream */
	u16 intra_matrix[64];
	u16 chroma_intra_matrix[64];
	u16 inter_matrix[64];
	u16 chroma_inter_matrix[64];

	/* MPEG-4 specific */
	int studio_profile;
	int time_base;                  ///< time in seconds of last I,P,S Frame
	int quant_precision;
	int quarter_sample;              ///< 1->qpel, 0->half pel ME/MC
	int aspect_ratio_info; //FIXME remove
	int sprite_warping_accuracy;
	int data_partitioning;           ///< data partitioning flag from header
	int low_delay;                   ///< no reordering needed / has no B-frames
	int vo_type;
	int mpeg_quant;

	/* divx specific, used to workaround (many) bugs in divx5 */
	int divx_packed;

	/* MPEG-2-specific - I wished not to have to support this mess. */
	int progressive_sequence;

	int progressive_frame;
	int interlaced_dct;

	int h_edge_pos, v_edge_pos;///< horizontal / vertical position of the right/bottom edge (pixel replication)
	const u8 *y_dc_scale_table;     ///< qscale -> y_dc_scale table
	const u8 *c_dc_scale_table;     ///< qscale -> c_dc_scale table
	int qscale;		    ///< QP
	int chroma_qscale;	    ///< chroma QP
	int pict_type;		    ///< AV_PICTURE_TYPE_I, AV_PICTURE_TYPE_P, AV_PICTURE_TYPE_B, ...
	int f_code;		    ///< forward MV resolution
	int b_code;		    ///< backward MV resolution for B-frames (MPEG-4)
	int no_rounding;  /**< apply no rounding to motion compensation (MPEG-4, msmpeg4, ...)
	    for B-frames rounding mode is always 0 */
	int last_time_base;
	long time;		    ///< time of current frame
	long last_non_b_time;
	u16 pp_time;		    ///< time distance between the last 2 p,s,i frames
	u16 pb_time;		    ///< time distance between the last b and p,s,i frame
	u16 pp_field_time;
	u16 pb_field_time;	    ///< like above, just for interlaced
	int real_sprite_warping_points;
	int sprite_offset[2][2];	     ///< sprite offset[isChroma][isMVY]
	int sprite_delta[2][2];	     ///< sprite_delta [isY][isMVY]
	int mcsel;
	int partitioned_frame;	     ///< is current frame partitioned
	int top_field_first;
	int alternate_scan;
	int last_dc[3];                ///< last DC values for MPEG-1
	int dct_precision;
	int intra_dc_precision;
	int frame_pred_frame_dct;
	int q_scale_type;
	int context_reinit;
	int chroma_format;
};

struct mpeg4_dec_param {
	struct MpegEncContext m;

	/// number of bits to represent the fractional part of time
	int time_increment_bits;
	int shape;
	int vol_sprite_usage;
	int sprite_brightness_change;
	int num_sprite_warping_points;
	/// sprite trajectory points
	u16 sprite_traj[4][2];
	/// sprite shift [isChroma]
	int sprite_shift[2];

	// reversible vlc
	int rvlc;
	/// could this stream contain resync markers
	int resync_marker;
	/// time distance of first I -> B, used for interlaced B-frames
	int t_frame;

	int new_pred;
	int enhancement_type;
	int scalability;
	int use_intra_dc_vlc;

	/// QP above which the ac VLC should be used for intra dc
	int intra_dc_threshold;

	/* bug workarounds */
	int divx_version;
	int divx_build;
	int xvid_build;
	int lavc_build;

	/// flag for having shown the warning about invalid Divx B-frames
	int showed_packed_warning;
	/** does the stream contain the low_delay flag,
	*  used to work around buggy encoders. */
	int vol_control_parameters;
	int cplx_estimation_trash_i;
	int cplx_estimation_trash_p;
	int cplx_estimation_trash_b;

	struct VLC studio_intra_tab[12];
	struct VLC studio_luma_dc;
	struct VLC studio_chroma_dc;

	int rgb;

	struct AVRational time_base;
	int ticks_per_frame;
	struct AVRational sample_aspect_ratio;
	enum AVColorPrimaries color_primaries;
	enum AVColorTransferCharacteristic color_trc;
	enum AVColorSpace colorspace;
#ifdef CONFIG_AMLOGIC_MEDIA_V4L_SOFTWARE_PARSER
	enum AVPixelFormat pix_fmt;
	enum AVColorRange color_range;
	enum AVChromaLocation chroma_sample_location;
#endif
	int err_recognition;
	int idct_algo;
	int bits_per_raw_sample;
	int profile;
	int level;
	struct AVRational framerate;
	int flags;
};

struct mpeg4_param_sets {
	bool head_parsed;
	/* currently active parameter sets */
	struct mpeg4_dec_param dec_ps;
};

#ifdef CONFIG_AMLOGIC_MEDIA_V4L_SOFTWARE_PARSER
int mpeg4_decode_extradata_ps(u8 *buf, int size, struct mpeg4_param_sets *ps);
#else
inline int mpeg4_decode_extradata_ps(u8 *buf, int size, struct mpeg4_param_sets *ps) { return -1; }
#endif

#endif

