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