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    M4WRITER_common.h
197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    VES writers shell interface.
207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note    This file defines the types internally used by the VES to abstract writers
217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifndef __M4WRITER_COMMON_H__
247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define __M4WRITER_COMMON_H__
257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef __cplusplus
277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargiextern "C" {
287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* __cplusplus */
297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4OSA_Types.h"
317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4OSA_FileWriter.h"   /* for M4OSA_FileWriterPointer */
327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4OSA_FileReader.h"   /* for M4OSA_FileWriterPointer */
337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4OSA_OptionID.h"     /* for M4OSA_OPTION_ID_CREATE() */
347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4OSA_CoreID.h"       /* for M4WRITER_COMMON */
357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4SYS_Stream.h"       /* for M4SYS_StreamID */
377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4SYS_AccessUnit.h"   /* for M4SYS_AccessUnit */
387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * MP4W Errors & Warnings definition
427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4WAR_WRITER_STOP_REQ        M4OSA_ERR_CREATE(M4_WAR, M4WRITER_COMMON ,0x000001)
457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * enum        M4WRITER_OutputFileType
497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    This enum defines the avalaible output file format.
507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef enum
537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_kUnknown=-1,
557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_k3GPP=0,            /**< 3GPP compliant file */
567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_kAVI=1,            /**< AVI file */
577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_kAMR=2,            /**< AMR file */
587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_kNETWORK3GPP=3,    /**< 3GPP via TCP */
597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_kPCM=4,            /**< PCM file */
607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_kJPEG=5,            /**< JPEG EXIF writer */
617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_kMP3=6,            /**< MP3 writer */
627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_kType_NB  /* number of writers, keep it as last enum entry */
647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4WRITER_OutputFileType;
667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * enum    M4WRITER_OptionID
707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    This enums defines all avalaible options. All the reuturned values are in
717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *           M4OSA_UInt32 type.
727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef enum {
757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_kMaxAUSize        = M4OSA_OPTION_ID_CREATE (M4_READ|M4_WRITE, M4WRITER_COMMON, 0x01),
767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_kMaxChunckSize    = M4OSA_OPTION_ID_CREATE (M4_READ|M4_WRITE, M4WRITER_COMMON, 0x02),
777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_kFileSize          = M4OSA_OPTION_ID_CREATE (M4_READ            , \
787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4WRITER_COMMON, 0x03),  /**< File size if the process was ended when we call the method */
797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_kFileSizeAudioEstimated= M4OSA_OPTION_ID_CREATE (M4_READ    ,\
807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi         M4WRITER_COMMON, 0x04),    /**< File size if the process was ended when we call the
817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                     method, estimated size for audio */
827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_kEmbeddedString  = M4OSA_OPTION_ID_CREATE (M4_WRITE        ,\
837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi         M4WRITER_COMMON, 0x05),    /**< String embedded at the end of the file(SW - VES) */
847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_kEmbeddedVersion = M4OSA_OPTION_ID_CREATE (M4_WRITE        ,\
857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi         M4WRITER_COMMON, 0x06),    /**< Version embedded at the end of the file */
867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_kIntegrationTag  = M4OSA_OPTION_ID_CREATE (M4_WRITE        ,\
877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi         M4WRITER_COMMON, 0x07),    /**< String embedded at the end of the file (char[60]
887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                         for integration purpose) */
897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_kMaxFileSize      = M4OSA_OPTION_ID_CREATE (M4_WRITE        , \
907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4WRITER_COMMON, 0x08),    /**< Maximum file size limitation */
917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_kMaxFileDuration = M4OSA_OPTION_ID_CREATE (M4_WRITE        ,\
927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi         M4WRITER_COMMON, 0x09),    /**< Maximum file duration limitation */
937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_kSetFtypBox      = M4OSA_OPTION_ID_CREATE (M4_WRITE        ,\
947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi         M4WRITER_COMMON, 0x0A),    /**< Set 'ftyp' atom */
957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_kMetaData          = M4OSA_OPTION_ID_CREATE (M4_WRITE        ,\
967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi         M4WRITER_COMMON, 0x0B),    /**< Additionnal information to set in the file */
977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_kDSI          = M4OSA_OPTION_ID_CREATE (M4_WRITE        , \
987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4WRITER_COMMON, 0x0C),    /**< To set DSI of the file (Decoder specifc info) */
997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_kJpegReserveFPData     = M4OSA_OPTION_ID_CREATE (M4_WRITE        ,\
1007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi         M4WRITER_COMMON, 0x0D),    /**< Reserve some space in the file for JPEG fast
1017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        processing data */
1027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_kJpegSetFPData     = M4OSA_OPTION_ID_CREATE (M4_WRITE        , \
1037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4WRITER_COMMON, 0x0E),    /**< Write Fast Processing Data in the file*/
1047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* + CRLV6775 -H.264 trimming */
1057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_kMUL_PPS_SPS       = M4OSA_OPTION_ID_CREATE (M4_WRITE        , M4WRITER_COMMON, 0x0F)
1067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* - CRLV6775 -H.264 trimming */
1077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4WRITER_OptionID;
1087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
1117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * struct    M4WRITER_Header
1137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    This structure defines the buffer where an header is put.
1147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
1167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef struct
1177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
1187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_MemAddr8    pBuf;        /**< Buffer for the header */
1197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt32    Size;        /**< Size of the data */
1207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4WRITER_Header;
1217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
1247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * struct    M4WRITER_StreamVideoInfos
1267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    This structure defines the specific video stream infos, extension to
1277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *           M4SYS_StreamDescription.
1287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
1307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef struct {
1317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt32    height;                /**< Frame height */
1327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt32    width;                /**< Frame Width */
1337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Double    fps;                /**< Targetted framerate of the video */
1347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_Header    Header;                /**< Sequence header of the video stream,
1357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        member set to NULL if no header present */
1367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4WRITER_StreamVideoInfos;
1377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
1407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * struct    M4WRITER_StreamAudioInfos
1427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    This structure defines the specific audio stream infos, extension to
1437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi             M4SYS_StreamDescription.
1447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
1467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef struct {
1477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt32    nbSamplesPerSec;    /**< Number of Samples per second */
1487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt16    nbBitsPerSample;    /**< Number of Bits in 1 sample */
1497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt16    nbChannels;            /**< Number of channels */
1507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_Header    Header;                /**< Decoder Specific Info of the audiostream,
1517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                             member set to NULL if no DSI present */
1527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4WRITER_StreamAudioInfos;
1537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
1567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * enum        M4WRITER_Orientation
1587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    This enum defines the possible orientation of a frame as described
1597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *            in the EXIF standard.
1607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
1627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef enum
1637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
1647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_OrientationUnknown = 0,
1657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_OrientationTopLeft,
1667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_OrientationTopRight,
1677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_OrientationBottomRight,
1687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_OrientationBottomLeft,
1697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_OrientationLeftTop,
1707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_OrientationRightTop,
1717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_OrientationRightBottom,
1727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_OrientationLeftBottom
1737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi}M4WRITER_Orientation ;
1747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
1767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * struct    M4WRITER_MetaData
1787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    This structure defines all the meta data to store in the encoded file.
1797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
1807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
1817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef struct
1827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
1837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Char*                Description ;
1847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Char*                PhoneManufacturer ;
1857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Char*                PhoneModel ;
1867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Char*                Artist ;
1877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Char*                Copyright ;
1887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Char*                Software ;
1897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Char*                CreationDate;
1907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_Orientation    Orientation ;
1917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt32            Width ;
1937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt32            Height ;
1947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt32            ThumbnailWidth ;
1967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt32            ThumbnailHeight ;
1977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Bool                ThumbnailPresence ;
1987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi}M4WRITER_MetaData;
1997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef void* M4WRITER_Context;
2027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef M4OSA_ERR (M4WRITER_openWrite)        (M4WRITER_Context* hContext,\
2047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                             void* outputFileDescriptor,\
2057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                             M4OSA_FileWriterPointer* pFileWriterPointer,\
2067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                             void* tempFileDescriptor, \
2077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                             M4OSA_FileReadPointer* pFileReaderPointer);
2087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef M4OSA_ERR (M4WRITER_addStream)        (M4WRITER_Context  pContext,\
2097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                            M4SYS_StreamDescription*streamDescription);
2107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef M4OSA_ERR (M4WRITER_startWriting)    (M4WRITER_Context  pContext);
2117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef M4OSA_ERR (M4WRITER_closeWrite)        (M4WRITER_Context  pContext);
2127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef M4OSA_ERR (M4WRITER_setOption)        (M4WRITER_Context  pContext, \
2137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                            M4OSA_UInt32 optionID, \
2147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                            M4OSA_DataOption optionValue);
2157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef M4OSA_ERR (M4WRITER_getOption)        (M4WRITER_Context  pContext, \
2167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                            M4OSA_UInt32 optionID, \
2177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                            M4OSA_DataOption optionValue);
2187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
2217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
2227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * struct    M4WRITER_GlobalInterface
2237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    Defines all the functions required for a writer shell.
2247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
2257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
2267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef struct _M4WRITER_GlobalInterface
2277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
2287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_openWrite*             pFctOpen;
2297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_addStream*                pFctAddStream;
2307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_startWriting*          pFctStartWriting;
2317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_closeWrite*            pFctCloseWrite;
2327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_setOption*                pFctSetOption;
2337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_getOption*                pFctGetOption;
2347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4WRITER_GlobalInterface;
2357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef M4OSA_ERR  M4WRITER_startAU(M4WRITER_Context pContext, M4SYS_StreamID streamID,\
2377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                     M4SYS_AccessUnit* pAU);
2387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef M4OSA_ERR  M4WRITER_processAU(M4WRITER_Context pContext, M4SYS_StreamID streamID,\
2397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                     M4SYS_AccessUnit* pAU);
2407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
2427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
2437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * struct    M4WRITER_DataInterface
2447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    Defines all the functions required to write data with a writer shell.
2457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
2467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/
2477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef struct _M4WRITER_DataInterface
2487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
2497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_startAU*    pStartAU;
2507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_processAU* pProcessAU;
2517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4WRITER_Context    pWriterContext;
2537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4WRITER_DataInterface;
2557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef __cplusplus
2577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi}
2587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* __cplusplus */
2597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /*__M4WRITER_COMMON_H__*/
2617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
262