123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- #include "avi_decoder.h"
- #include "avi_tscc_decoder.h"
- #include "avi_rle_decoder.h"
- #include "avi_yuv_decoder.h"
- #include "avi_rgb_decoder.h"
- int AVIDecoderCreator::CreateVideoDecoder(const nsavi::AVIH *avi_header, const nsavi::STRH *stream_header, const nsavi::STRF *stream_format, const nsavi::STRD *stream_data, ifc_avivideodecoder **decoder)
- {
- nsavi::video_format *format = (nsavi::video_format *)stream_format;
- if (format)
- {
- if (format->compression == 'ccst') // tscc
- {
- *decoder = AVITSCC::CreateDecoder(format);
- if (*decoder)
- return CREATEDECODER_SUCCESS;
- else
- return CREATEDECODER_FAILURE;
- }
- else if (format->compression == nsavi::video_format_rle8) // 8bit RLE
- {
- *decoder = AVIRLE::CreateDecoder(format);
- if (*decoder)
- return CREATEDECODER_SUCCESS;
- else
- return CREATEDECODER_FAILURE;
- }
- else if (format->compression == 'YVYU') // YUV
- {
- *decoder = AVIYUV::CreateDecoder(format);
- if (*decoder)
- return CREATEDECODER_SUCCESS;
- else
- return CREATEDECODER_FAILURE;
- }
- else if (format->compression == nsavi::video_format_rgb)
- {
- *decoder = AVIRGB::CreateDecoder(format);
- if (*decoder)
- return CREATEDECODER_SUCCESS;
- else
- return CREATEDECODER_FAILURE;
- }
- }
- return CREATEDECODER_NOT_MINE;
- }
- #define CBCLASS AVIDecoderCreator
- START_DISPATCH;
- CB(CREATE_VIDEO_DECODER, CreateVideoDecoder)
- END_DISPATCH;
- #undef CBCLASS
|