161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan/*-------------------------------------------------------------------------- 261a2c6a19dbd06a317a419623020e02056661876Praveen ChavanCopyright (c) 2010-2012, The Linux Foundation. All rights reserved. 361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 461a2c6a19dbd06a317a419623020e02056661876Praveen ChavanRedistribution and use in source and binary forms, with or without 561a2c6a19dbd06a317a419623020e02056661876Praveen Chavanmodification, are permitted provided that the following conditions are met: 661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan * Redistributions of source code must retain the above copyright 761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan notice, this list of conditions and the following disclaimer. 861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan * Redistributions in binary form must reproduce the above copyright 961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan notice, this list of conditions and the following disclaimer in the 1061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan documentation and/or other materials provided with the distribution. 1161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan * Neither the name of The Linux Foundation nor 1261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan the names of its contributors may be used to endorse or promote 1361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan products derived from this software without specific prior written 1461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan permission. 1561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 1661a2c6a19dbd06a317a419623020e02056661876Praveen ChavanTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 1761a2c6a19dbd06a317a419623020e02056661876Praveen ChavanAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1861a2c6a19dbd06a317a419623020e02056661876Praveen ChavanIMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 1961a2c6a19dbd06a317a419623020e02056661876Praveen ChavanNON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 2061a2c6a19dbd06a317a419623020e02056661876Praveen ChavanCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 2161a2c6a19dbd06a317a419623020e02056661876Praveen ChavanEXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 2261a2c6a19dbd06a317a419623020e02056661876Praveen ChavanPROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 2361a2c6a19dbd06a317a419623020e02056661876Praveen ChavanOR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 2461a2c6a19dbd06a317a419623020e02056661876Praveen ChavanWHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 2561a2c6a19dbd06a317a419623020e02056661876Praveen ChavanOTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 2661a2c6a19dbd06a317a419623020e02056661876Praveen ChavanADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan--------------------------------------------------------------------------*/ 2861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan#ifndef __DTSPARSER_H 2961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan#define __DTSPARSER_H 3061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 3161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan#include "OMX_Core.h" 3261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan#include "OMX_QCOMExtns.h" 3361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan#include "qc_omx_component.h" 3461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 3561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan#include<stdlib.h> 3661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 3761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan#include <stdio.h> 3861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan#include <inttypes.h> 3961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 4061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan#ifdef _ANDROID_ 4161a2c6a19dbd06a317a419623020e02056661876Praveen Chavanextern "C" { 4261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan#include<utils/Log.h> 4361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan} 4461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan#else 4561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan#define ALOGE(fmt, args...) fprintf(stderr, fmt, ##args) 4661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan#endif /* _ANDROID_ */ 4761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 4861a2c6a19dbd06a317a419623020e02056661876Praveen Chavanclass omx_time_stamp_reorder 4961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan{ 5061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan public: 5161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan omx_time_stamp_reorder(); 5261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan ~omx_time_stamp_reorder(); 5361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan void set_timestamp_reorder_mode(bool flag); 5461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan void enable_debug_print(bool flag); 5561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan bool insert_timestamp(OMX_BUFFERHEADERTYPE *header); 5661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan bool get_next_timestamp(OMX_BUFFERHEADERTYPE *header, bool is_interlaced); 5761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan bool remove_time_stamp(OMX_TICKS ts, bool is_interlaced); 5861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan void flush_timestamp(); 5961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 6061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan private: 6161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan#define TIME_SZ 64 6261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan typedef struct timestamp { 6361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan OMX_TICKS timestamps; 6461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan bool in_use; 6561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } timestamp; 6661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan typedef struct time_stamp_list { 6761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan timestamp input_timestamps[TIME_SZ]; 6861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan time_stamp_list *next; 6961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan time_stamp_list *prev; 7061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan unsigned int entries_filled; 7161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } time_stamp_list; 7261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan bool error; 7361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan time_stamp_list *phead,*pcurrent; 7461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan bool get_current_list(); 7561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan bool add_new_list(); 7661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan bool update_head(); 7761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan void delete_list(); 7861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan void handle_error() { 7961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan ALOGE("Error handler called for TS Parser"); 8061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 8161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan if (error) 8261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan return; 8361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan 8461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan error = true; 8561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan delete_list(); 8661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan } 8761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan bool reorder_ts; 8861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan bool print_debug; 8961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan}; 9061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan#endif 91