ex

Fork of mbed-os-example-mbed5-blinky by mbed-os-examples

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers baidu_media_play_buffer.h Source File

baidu_media_play_buffer.h

00001 // Copyright 2017 Baidu Inc. All Rights Reserved.
00002 // Author: Chen Xihao (chenxihao@baidu.com)
00003 //
00004 // Description: Buffer for media player
00005 
00006 #ifndef BAIDU_TINYDU_IOT_OS_SRC_MEDIA_PLAYER_BAIDU_MEDIA_PLAY_BUFFER_H
00007 #define BAIDU_TINYDU_IOT_OS_SRC_MEDIA_PLAYER_BAIDU_MEDIA_PLAY_BUFFER_H
00008 
00009 #include "rtos.h"
00010 
00011 namespace duer {
00012 
00013 // FIFO circle buffer
00014 class MediaPlayBuffer {
00015 public:
00016     MediaPlayBuffer(void* buffer, size_t size);
00017 
00018     ~MediaPlayBuffer();
00019 
00020     // write buffer until buffer has enough space
00021     void write(const void* data, size_t size);
00022 
00023     // read buffer until buffer has enough data
00024     void read(void* data, size_t size);
00025 
00026     void clear();
00027 
00028     static const size_t MIN_BUFFER_SIZE = 5 * 1024;
00029 
00030     static const size_t DEFAULT_BUFFER_SIZE = 10 * 1024;
00031 
00032 private:
00033     MediaPlayBuffer(const MediaPlayBuffer&);
00034 
00035     MediaPlayBuffer& operator=(const MediaPlayBuffer&);
00036 
00037     char* const _buffer;
00038     const size_t _BUFFER_SIZE;
00039     Mutex _mutex;
00040     bool _wait;
00041     Semaphore _semaphore;
00042     int _start;
00043     int _end;
00044 };
00045 
00046 } // namespace duer
00047 
00048 #endif // BAIDU_TINYDU_IOT_OS_SRC_MEDIA_PLAYER_BAIDU_MEDIA_PLAY_BUFFER_H