3 * Copyright (C) 2010-2013 Team XBMC
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with XBMC; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
22 #if defined(HAVE_LIBOPENMAX)
24 #include "DVDVideoCodec.h"
27 class CDVDVideoCodecOpenMax : public CDVDVideoCodec
30 CDVDVideoCodecOpenMax();
31 virtual ~CDVDVideoCodecOpenMax();
34 virtual bool Open(CDVDStreamInfo &hints, CDVDCodecOptions &options);
35 virtual void Dispose(void);
36 virtual int Decode(BYTE *pData, int iSize, double dts, double pts);
37 virtual void Reset(void);
38 virtual bool GetPicture(DVDVideoPicture *pDvdVideoPicture);
39 virtual void SetDropState(bool bDrop);
40 virtual const char* GetName(void) { return (const char*)m_pFormatName; }
43 const char *m_pFormatName;
44 COpenMaxVideo *m_omx_decoder;
45 DVDVideoPicture m_videobuffer;
47 // bitstream to bytestream (Annex B) conversion support.
48 bool bitstream_convert_init(void *in_extradata, int in_extrasize);
49 bool bitstream_convert(BYTE* pData, int iSize, uint8_t **poutbuf, int *poutbuf_size);
50 void bitstream_alloc_and_copy( uint8_t **poutbuf, int *poutbuf_size,
51 const uint8_t *sps_pps, uint32_t sps_pps_size, const uint8_t *in, uint32_t in_size);
53 typedef struct omx_bitstream_ctx {
56 uint8_t *sps_pps_data;
60 uint32_t m_sps_pps_size;
61 omx_bitstream_ctx m_sps_pps_context;
62 bool m_convert_bitstream;