17c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*
27c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Copyright (C) 2011 The Android Open Source Project
37c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *
47c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Licensed under the Apache License, Version 2.0 (the "License");
57c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * you may not use this file except in compliance with the License.
67c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * You may obtain a copy of the License at
77c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *
87c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *      http://www.apache.org/licenses/LICENSE-2.0
97c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *
107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Unless required by applicable law or agreed to in writing, software
117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * distributed under the License is distributed on an "AS IS" BASIS,
127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * See the License for the specific language governing permissions and
147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * limitations under the License.
157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi */
167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @file    M4ENCODER_common.h
197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note    This file defines the types internally used by the VES to abstract encoders
207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifndef __M4ENCODER_COMMON_H__
247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define __M4ENCODER_COMMON_H__
257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef __cplusplus
277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargiextern "C" {
287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* __cplusplus */
297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Video preprocessing common interface */
337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4VPP_API.h"
347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Writer common interface */
377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4WRITER_common.h"
387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* IMAGE STAB */
407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* percentage of image suppressed (computed from the standard dimension).*/
417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4ENCODER_STAB_FILTER_CROP_PERCENTAGE 10
427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* WARNING: take the inferior even dimension, ex: 10% for QCIF output => 192x158 */
437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * enum        M4ENCODER_OpenMode
477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    Definition of open mode for the encoder.
487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note    DEFAULT  : pointer to M4ENCODER_open() which use default parameters
497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *          ADVANCED : pointer to M4ENCODER_open_advanced() which allow to customize
507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                     various encoding parameters
517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef enum
547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_OPEN_DEFAULT,
567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_OPEN_ADVANCED
577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4ENCODER_OpenMode;
587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /**
607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * enum        M4ENCODER_FrameRate
627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    Thie enum defines the encoded video framerates.
637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef enum
667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_k5_FPS,
687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_k7_5_FPS,
697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_k10_FPS,
707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_k12_5_FPS,
717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_k15_FPS,
727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_k20_FPS,
737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_k25_FPS,
747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_k30_FPS,
757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kVARIABLE_FPS,            /**< Variable video bitrate */
767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kUSE_TIMESCALE            /**< Advanced encoding, use timescale indication rather
777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                                than framerate */
787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4ENCODER_FrameRate;
797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * enum        M4ENCODER_InputFormat
837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    Thie enum defines the video format of the grabbing.
847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef enum
877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
888806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_kIYUV420=0, /**< YUV 4:2:0 planar (standard input for mpeg-4 video) */
898806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_kIYUV422,   /**< YUV422 planar */
908806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_kIYUYV,     /**< YUV422 interlaced, luma first */
918806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_kIUYVY,     /**< YUV422 interlaced, chroma first */
928806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_kIJPEG,     /**< JPEG compressed frames */
938806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_kIRGB444,   /**< RGB 12 bits 4:4:4 */
948806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_kIRGB555,   /**< RGB 15 bits 5:5:5 */
958806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_kIRGB565,   /**< RGB 16 bits 5:6:5 */
968806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_kIRGB24,    /**< RGB 24 bits 8:8:8 */
978806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_kIRGB32,    /**< RGB 32 bits  */
988806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_kIBGR444,   /**< BGR 12 bits 4:4:4 */
998806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_kIBGR555,   /**< BGR 15 bits 5:5:5 */
1008806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_kIBGR565,   /**< BGR 16 bits 5:6:5 */
1018806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_kIBGR24,    /**< BGR 24 bits 8:8:8 */
1028806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_kIBGR32     /**< BGR 32 bits  */
1037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4ENCODER_InputFormat;
1047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
1067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * enum        M4ENCODER_Format
1087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    Thie enum defines the video compression formats.
1097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
1117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef enum
1127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
1137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kMPEG4 = 0,
1147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kH263,
1157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kH264,
1167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kJPEG,
1177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kMJPEG,
1187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kNULL,
1197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kYUV420,            /**< No compression */
1207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kYUV422,            /**< No compression */
1217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kVideo_NB /* number of decoders, keep it as last enum entry */
1237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4ENCODER_Format;
1247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
1267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * enum        M4ENCODER_FrameWidth
1287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    Thie enum defines the avalaible frame Width.
1297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
1317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef enum
1327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
1338806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_SQCIF_Width = 128, /**< SQCIF 128x96 */
1348806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_QQVGA_Width = 160, /**< QQVGA 160x120 */
1358806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_QCIF_Width  = 176, /**< QCIF 176x144 */
1368806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_QVGA_Width  = 320, /**< QVGA 320x240 */
1378806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_CIF_Width   = 352, /**< CIF 352x288 */
1388806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_VGA_Width   = 640, /**< VGA 640x480 */
1398806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_SVGA_Width  = 800, /**< SVGA 800x600 */
1408806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_XGA_Width   = 1024, /**< XGA 1024x768 */
1418806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_XVGA_Width  = 1280, /**< XVGA 1280x1024 */
1427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* +PR LV5807 */
1438806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_WVGA_Width  = 800, /**< WVGA 800 x 480 */
1448806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_NTSC_Width  = 720, /**< NTSC 720 x 480 */
1457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* -PR LV5807 */
1467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* +CR Google */
1488806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_640_360_Width   = 640,  /**< 640x360 */
1497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    // StageFright encoders require %16 resolution
1508806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_854_480_Width   = 848,  /**< 848x480 */
1518806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_1280_720_Width  = 1280, /**< 720p 1280x720 */
1527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    // StageFright encoders require %16 resolution
1538806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_1080_720_Width  = 1088, /**< 720p 1088x720 */
1548806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_960_720_Width   = 960,  /**< 720p 960x720 */
1558806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_1920_1080_Width = 1920  /**< 1080p 1920x1080 */
1567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* -CR Google */
1577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4ENCODER_FrameWidth;
1597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
1617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * enum        M4ENCODER_FrameHeight
1637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    Thie enum defines the avalaible frame Height.
1647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
1667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef enum
1677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
1688806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_SQCIF_Height = 96,  /**< SQCIF 128x96 */
1698806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_QQVGA_Height = 120, /**< QQVGA 160x120 */
1708806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_QCIF_Height  = 144, /**< QCIF 176x144 */
1718806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_QVGA_Height  = 240, /**< QVGA 320x240 */
1728806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_CIF_Height   = 288, /**< CIF 352x288 */
1738806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_VGA_Height   = 480, /**< VGA 340x480 */
1748806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_SVGA_Height  = 600, /**< SVGA 800x600 */
1758806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_XGA_Height   = 768, /**< XGA 1024x768 */
1768806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_XVGA_Height  = 1024, /**< XVGA 1280x1024 */
1777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* +PR LV5807 */
1788806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_WVGA_Height  = 480, /**< WVGA 800 x 480 */
1798806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_NTSC_Height  = 480, /**< NTSC 720 x 480 */
1807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* -PR LV5807 */
1817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* +CR Google */
1838806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_640_360_Height  = 360, /**< 640x360 */
1848806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_854_480_Height  = 480, /**< 854x480 */
1858806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_1280_720_Height = 720, /**< 720p 1280x720 */
1868806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_1080_720_Height = 720, /**< 720p 1080x720 */
1878806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_960_720_Height  = 720, /**< 720p 960x720 */
1888806b706693c0992724f6603353af18aeb4a0f80Hong Teng    // StageFright encoders require %16 resolution
1898806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_1920_1080_Height = 1088 /**< 1080p 1920x1080 */
1907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* -CR Google */
1917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4ENCODER_FrameHeight;
1927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
1947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * enum        M4ENCODER_Bitrate
1967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    Thie enum defines the avalaible bitrates.
1977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
1997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef enum
2007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
2018806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_k28_KBPS  = 28000,
2028806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_k40_KBPS  = 40000,
2038806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_k64_KBPS  = 64000,
2048806b706693c0992724f6603353af18aeb4a0f80Hong Teng    M4ENCODER_k96_KBPS  = 96000,
2057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_k128_KBPS = 128000,
2067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_k192_KBPS = 192000,
2077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_k256_KBPS = 256000,
2087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_k384_KBPS = 384000,
2097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_k512_KBPS = 512000,
2107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_k800_KBPS = 800000
2117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4ENCODER_Bitrate;
2137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* IMAGE STAB */
2157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
2177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
2187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * enum            M4ENCODER_StabMode
2197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief        The current mode of the stabilization filter.
2207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
2217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
2227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef enum
2237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
2247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kStabOff = 0,        /**< stabilization filter is disabled */
2257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kStabCentered,    /**< stabilization filter is enabled. */
2267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                /**< Video input and output must have the same dimensions. Output
2277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    image will have black borders */
2287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kStabGrabMore        /**< stabilization filter is enabled. */
2297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                /**< Video input dimensions must be bigger than output. The ratio
2307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        is indicated by M4ENCODER_STAB_FILTER_CROP_PERCENTAGE */
2317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4ENCODER_StabMode;
2337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
2357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
2367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * enum            M4ENCODER_FrameMode
2377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief        Values to drive the encoder behaviour (type of frames produced)
2387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
2397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
2407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef enum
2417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
2427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kNormalFrame = 0,   /**< let the encoder decide which type of frame to encode */
2437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kLastFrame   = 1,   /**< force encoder the flush all its buffers because it is
2447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                         last frame  */
2457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kIFrame      = 2    /**< force encoder to generate an I frame */
2467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4ENCODER_FrameMode;
2487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
2507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
2517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * struct    M4ENCODER_Params
2527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    This structure defines all the settings avalaible when encoding.
2537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
2547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
2557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef struct
2567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
2577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Input */
2587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_InputFormat    InputFormat;        /**< Input video format (grabbing) */
2597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_FrameWidth    InputFrameWidth;    /**< Input Frame width (grabbing) */
2607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_FrameHeight    InputFrameHeight;    /**< Input Frame height (grabbing) */
2617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Output */
2637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_FrameWidth    FrameWidth;            /**< Frame width  */
2647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_FrameHeight    FrameHeight;        /**< Frame height  */
2657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_Bitrate        Bitrate;            /**< Bitrate, see enum  */
2667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_FrameRate        FrameRate;            /**< Framerate, see enum  */
2677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_Format        Format;                /**< Video compression format, H263, MPEG4,
2687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                                         MJPEG ...  */
2690a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury    M4OSA_Int32            videoProfile; /** video profile */
2700a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury    M4OSA_Int32            videoLevel;   /** video level */
2717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4ENCODER_Params;
2727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
2747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
2757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * struct    M4ENCODER_AdvancedParams
2767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    This structure defines the advanced settings available for MPEG-4 encoding.
2777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
2787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
2797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef struct
2807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
2817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /**
2827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi     * Input parameters (grabber coupled with encoder): */
2837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_InputFormat    InputFormat;                /**< Input video format */
2847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_FrameWidth    InputFrameWidth;            /**< Input Frame width */
2857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_FrameHeight    InputFrameHeight;            /**< Input Frame height */
2867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /**
2887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi     * Common settings for H263 and MPEG-4: */
2897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_FrameWidth    FrameWidth;                    /**< Frame width  */
2907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_FrameHeight    FrameHeight;                /**< Frame height  */
2917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt32            Bitrate;                    /**< Free value for the bitrate */
2927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /**< Framerate (if set to M4ENCODER_kUSE_TIMESCALE use uiRateFactor & uiTimeScale instead) */
2937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_FrameRate        FrameRate;
2947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /**< Video compression format: H263 or MPEG4 */
2957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_Format        Format;
2960a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury    M4OSA_Int32            videoProfile; /** output video profile */
2970a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury    M4OSA_Int32            videoLevel;   /** output video level */
2987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt32            uiHorizontalSearchRange; /**< Set to 0 will use default value (15) */
2997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt32            uiVerticalSearchRange;   /**< Set to 0 will use default value (15) */
3007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /**< Set to 0 will use default value (0x7FFF i.e. let engine decide when to put an I) */
3017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt32            uiStartingQuantizerValue;
3027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /**< Enable if priority is quality, Disable if priority is framerate */
3037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Bool                bInternalRegulation;
3047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /**< Ratio between the encoder frame rate and the actual frame rate */
3057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt8                uiRateFactor;
3067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /**< I frames periodicity, set to 0 will use default value */
3077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt32            uiIVopPeriod;
3087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /**< Motion estimation [default=0 (all tools), disable=8 (no tool)] */
3097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt8             uiMotionEstimationTools;
3107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /**
3127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi     * Settings for MPEG-4 only: */
3137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt32            uiTimeScale;                /**< Free value for the timescale */
3147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Bool                bErrorResilience;           /**< Disabled by default */
3157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /**< Disabled by default (if enabled, bErrorResilience should be enabled too!) */
3167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Bool                bDataPartitioning;
3177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Bool              bAcPrediction;           /**< AC prediction [default=1, disable=0] */
3187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4ENCODER_AdvancedParams;
3207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
3227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
3237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * struct    M4ENCODER_StillPictureParams
3247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    This structure defines all the settings avalaible when encoding still
3257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *            picture.
3267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
3277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
3287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef struct
3297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
3307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_FrameWidth    FrameWidth;            /**< Frame width  */
3317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_FrameHeight    FrameHeight;        /**< Frame height  */
3327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt32            Quality;            /**< Bitrate, see enum  */
3337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_Format        InputFormat;        /**< YUV 420 or 422  */
3347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_Format        Format;                /**< Video compression format, H263, MPEG4,
3357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                                         MJPEG ...  */
3367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Bool                PreProcessNeeded;    /**< Is the call to the VPP is necessary */
3377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Bool                EncodingPerStripes;    /**< Is encoding per stripes */
3387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4ENCODER_StillPictureParams;
3407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
3427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
3437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * struct    M4ENCODER_Header
3447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    This structure defines the buffer where the sequence header is put.
3457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
3467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
3477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef struct
3487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
3497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_MemAddr8    pBuf;        /**< Buffer for the header */
3507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt32    Size;        /**< Size of the data */
3517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4ENCODER_Header;
3537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
3557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
3567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * enum    M4ENCODER_OptionID
3577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief This enums defines all avalaible options.
3587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
3597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
3607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef enum
3617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
3627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /**< set the fragment size, option value is M4OSA_UInt32 type */
3637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kOptionID_VideoFragmentSize    = M4OSA_OPTION_ID_CREATE (M4_WRITE,\
3647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                                     M4ENCODER_COMMON, 0x01),
3657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /**< set the stabilization filtering, option value is M4ENCODER_StabMode type */
3677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kOptionID_ImageStabilization    = M4OSA_OPTION_ID_CREATE (M4_WRITE,\
3687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                                          M4ENCODER_COMMON, 0x02),
3697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /**< prevent writting of any AU, option value is M4OSA_Bool type */
3717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kOptionID_InstantStop            = M4OSA_OPTION_ID_CREATE (M4_WRITE,\
3727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                                         M4ENCODER_COMMON, 0x03),
3737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /**< get the DSI (encoder header) generated by the encoder */
3757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kOptionID_EncoderHeader        = M4OSA_OPTION_ID_CREATE (M4_READ ,\
3767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                                             M4ENCODER_COMMON, 0x04),
3777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*+ CR LV6775 -H.264 Trimming  */
3787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kOptionID_SetH264ProcessNALUfctsPtr= M4OSA_OPTION_ID_CREATE (M4_READ ,\
3807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                                             M4ENCODER_COMMON, 0x05),
3817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_kOptionID_H264ProcessNALUContext        = M4OSA_OPTION_ID_CREATE (M4_READ ,\
3827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                                             M4ENCODER_COMMON, 0x06)
3837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*-CR LV6775 -H.264 Trimming  */
3847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4ENCODER_OptionID;
3857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*+ CR LV6775 -H.264 Trimming  */
3877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef M4OSA_ERR (H264MCS_ProcessEncodedNALU_fct)(M4OSA_Void*ainstance,M4OSA_UInt8* inbuff,
3887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                               M4OSA_Int32  inbuf_size,
3897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                               M4OSA_UInt8 *outbuff, M4OSA_Int32 *outbuf_size);
3907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi//*- CR LV6775 -H.264 Trimming  */
3917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef M4OSA_Void* M4ENCODER_Context;
3937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef M4OSA_ERR (M4ENCODER_init) (
3957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4ENCODER_Context* pContext,
3967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4WRITER_DataInterface* pWriterDataInterface,
3977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VPP_apply_fct* pVPPfct,
3987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VPP_Context pVPPctxt,
3997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_Void* pExternalAPI,
4007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_Void* pUserData
4017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi);
4027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef M4OSA_ERR (M4ENCODER_open) (
4047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4ENCODER_Context pContext,
4057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4SYS_AccessUnit* pAU,
4067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_Void* pParams     /* Can be M4ENCODER_Params, M4ENCODER_AdvancedParams or
4077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    M4ENCODER_StillPictureParams */
4087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi);
4097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef M4OSA_ERR (M4ENCODER_start) (M4ENCODER_Context pContext);
4117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef M4OSA_ERR (M4ENCODER_stop) (M4ENCODER_Context pContext);
4127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef M4OSA_ERR (M4ENCODER_pause) (M4ENCODER_Context pContext);
4137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef M4OSA_ERR (M4ENCODER_resume) (M4ENCODER_Context pContext);
4147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef M4OSA_ERR (M4ENCODER_close) (M4ENCODER_Context pContext);
4157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef M4OSA_ERR (M4ENCODER_cleanup) (M4ENCODER_Context pContext);
4167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef M4OSA_ERR (M4ENCODER_regulBitRate) (M4ENCODER_Context pContext);
4177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef M4OSA_ERR (M4ENCODER_encode) (
4197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4ENCODER_Context pContext,
4207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIFI_ImagePlane* pInPlane,
4217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_Double Cts,
4227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4ENCODER_FrameMode FrameMode
4237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi);
4247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef M4OSA_ERR (M4ENCODER_setOption)    (
4267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4ENCODER_Context pContext,
4277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_UInt32 optionID,
4287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_DataOption optionValue
4297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi);
4307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef M4OSA_ERR (M4ENCODER_getOption)    (
4327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4ENCODER_Context pContext,
4337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_UInt32 optionID,
4347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_DataOption optionValue
4357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi);
4367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
4387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
4397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * struct    M4ENCODER_GlobalInterface
4407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    Defines all the functions required for an encoder shell.
4417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
4427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
4437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef struct _M4ENCODER_GlobalInterface
4457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
4467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_init*                pFctInit;
4477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_open*                pFctOpen;
4487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_start*            pFctStart;          /* Grabber mode */
4507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_stop*                pFctStop;           /* Grabber mode */
4517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_pause*            pFctPause;          /* Grabber mode */
4537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_resume*            pFctResume;         /* Grabber mode */
4547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_close*            pFctClose;
4567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_cleanup*            pFctCleanup;
4577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_regulBitRate*     pFctRegulBitRate;
4597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_encode*            pFctEncode;         /* Standalone mode */
4607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_setOption*        pFctSetOption;
4627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4ENCODER_getOption*        pFctGetOption;
4637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4ENCODER_GlobalInterface;
4647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef __cplusplus
4677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi}
4687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* __cplusplus */
4697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /*__M4ENCODER_COMMON_H__*/
4717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
472