1 /* 2 * Copyright (c) 2003-2004, Marcus Overhagen 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without modification, 6 * are permitted provided that the following conditions are met: 7 * 8 * * Redistributions of source code must retain the above copyright notice, 9 * this list of conditions and the following disclaimer. 10 * * Redistributions in binary form must reproduce the above copyright notice, 11 * this list of conditions and the following disclaimer in the documentation 12 * and/or other materials provided with the distribution. 13 * 14 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 15 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 16 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 17 * IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 18 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 19 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 20 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 21 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 22 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 23 * OF THE POSSIBILITY OF SUCH DAMAGE. 24 */ 25 #ifndef _RAW_DECODER_PLUGIN_H 26 #define _RAW_DECODER_PLUGIN_H 27 28 #include <Decoder.h> 29 30 using BCodecKit::BMediaPlugin; 31 using BCodecKit::BDecoder; 32 using BCodecKit::BDecoderPlugin; 33 34 35 class RawDecoder : public BDecoder 36 { 37 public: 38 void GetCodecInfo(media_codec_info *info); 39 40 status_t Setup(media_format *ioEncodedFormat, 41 const void *infoBuffer, size_t infoSize); 42 43 status_t NegotiateOutputFormat(media_format *ioDecodedFormat); 44 45 status_t SeekedTo(int64 frame, bigtime_t time); 46 47 status_t Decode(void *buffer, int64 *frameCount, 48 media_header *mediaHeader, media_decode_info *info); 49 50 private: 51 status_t NegotiateVideoOutputFormat(media_format *ioDecodedFormat); 52 status_t NegotiateAudioOutputFormat(media_format *ioDecodedFormat); 53 54 private: 55 int32 fFrameRate; 56 int32 fInputFrameSize; 57 int32 fOutputFrameSize; 58 int32 fInputSampleSize; 59 int32 fOutputSampleSize; 60 int32 fOutputBufferFrameCount; 61 void (*fSwapInput)(void *data, int32 count); 62 void (*fConvert)(void *dst, const void *src, int32 count); 63 void (*fSwapOutput)(void *data, int32 count); 64 65 const void * fChunkBuffer; 66 size_t fChunkSize; 67 68 bigtime_t fStartTime; 69 70 media_format fInputFormat; 71 }; 72 73 74 class RawDecoderPlugin : public BDecoderPlugin 75 { 76 public: 77 BDecoder * NewDecoder(uint index); 78 status_t GetSupportedFormats(media_format ** formats, size_t * count); 79 }; 80 81 #endif 82