A BMediaDecoder wrapper that uses a callback for GetNextChunk()
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20779 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
39faeeba38
commit
175eb4f0de
45
src/add-ons/media/media-add-ons/dvb/MediaStreamDecoder.cpp
Normal file
45
src/add-ons/media/media-add-ons/dvb/MediaStreamDecoder.cpp
Normal file
@ -0,0 +1,45 @@
|
||||
#include "MediaStreamDecoder.h"
|
||||
|
||||
MediaStreamDecoder::MediaStreamDecoder(get_next_chunk_func next_chunk, void *cookie)
|
||||
: BMediaDecoder()
|
||||
, fCookie(cookie)
|
||||
, fGetNextChunk(next_chunk)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
status_t
|
||||
MediaStreamDecoder::SetInputFormat(const media_format &in_format)
|
||||
{
|
||||
status_t err = BMediaDecoder::InitCheck();
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
return BMediaDecoder::SetTo(&in_format);
|
||||
}
|
||||
|
||||
|
||||
status_t
|
||||
MediaStreamDecoder::SetOutputFormat(media_format *output_format)
|
||||
{
|
||||
status_t err = BMediaDecoder::InitCheck();
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
return BMediaDecoder::SetOutputFormat(output_format);
|
||||
}
|
||||
|
||||
|
||||
status_t
|
||||
MediaStreamDecoder::Decode(void *out_buffer, int64 *out_frameCount,
|
||||
media_header *out_mh, media_decode_info *info)
|
||||
{
|
||||
return BMediaDecoder::Decode(out_buffer, out_frameCount, out_mh, info);
|
||||
}
|
||||
|
||||
|
||||
status_t
|
||||
MediaStreamDecoder::GetNextChunk(const void **chunkData, size_t *chunkLen, media_header *mh)
|
||||
{
|
||||
return (*fGetNextChunk)(chunkData, chunkLen, mh, fCookie);
|
||||
}
|
29
src/add-ons/media/media-add-ons/dvb/MediaStreamDecoder.h
Normal file
29
src/add-ons/media/media-add-ons/dvb/MediaStreamDecoder.h
Normal file
@ -0,0 +1,29 @@
|
||||
#ifndef __MEDIA_STREAM_DECODER_H
|
||||
#define __MEDIA_STREAM_DECODER_H
|
||||
|
||||
#include <media/MediaDecoder.h>
|
||||
#include "MediaStreamDecoder.h"
|
||||
|
||||
typedef status_t (*get_next_chunk_func)(const void **chunkData, size_t *chunkLen, media_header *mh, void *cookie);
|
||||
|
||||
|
||||
class MediaStreamDecoder : private BMediaDecoder
|
||||
{
|
||||
public:
|
||||
MediaStreamDecoder(get_next_chunk_func next_chunk, void *cookie);
|
||||
|
||||
status_t SetInputFormat(const media_format &in_format);
|
||||
status_t SetOutputFormat(media_format *output_format);
|
||||
|
||||
status_t Decode(void *out_buffer, int64 *out_frameCount,
|
||||
media_header *out_mh, media_decode_info *info);
|
||||
|
||||
private:
|
||||
void * fCookie;
|
||||
get_next_chunk_func fGetNextChunk;
|
||||
|
||||
private:
|
||||
status_t GetNextChunk(const void **chunkData, size_t *chunkLen, media_header *mh);
|
||||
};
|
||||
|
||||
#endif
|
Loading…
x
Reference in New Issue
Block a user