TDME2  1.9.200
MPEG1Decoder.h
Go to the documentation of this file.
1 #pragma once
2 
3 #if !defined(PL_MPEG_IMPLEMENTATION)
4  #include <ext/pl_mpeg/pl_mpeg.h>
5 #endif
6 
7 #include <memory>
8 #include <string>
9 #include <vector>
10 
11 #include <tdme/tdme.h>
15 
16 using std::string;
17 using std::unique_ptr;
18 using std::vector;
19 
22 
23 /**
24  * PL_MPEG/MPEG1 video decoder
25  * @author Andreas Drewke
26  */
28 {
29 public:
30  // forbid class copy
32 
33  /**
34  * Constructor
35  */
36  inline MPEG1Decoder() {}
37 
38  /**
39  * Destructor
40  */
41  inline virtual ~MPEG1Decoder() {
42  close();
43  }
44 
45  // overridden methods
46  void openFile(const string& pathName, const string& fileName) override;
47  void reset() override;
48  void update(float deltaTime) override;
49  void seek(float time) override;
50  int64_t readAudioFromStream(ByteBuffer* data) override;
51  int64_t readVideoFromStream(ByteBuffer* data) override;
52  void close() override;
53 
54 private:
55  plm_t* plm { nullptr };
56  unique_ptr<ByteBuffer> videoBuffer;
57  unique_ptr<ByteBuffer> audioBuffer;
58 
59  /**
60  * PLM on video
61  * @param plm plm
62  * @param frame frame
63  * @param user user data
64  */
65  static void plmOnVideo(plm_t* plm, plm_frame_t *frame, void *user);
66 
67  /**
68  * PLM on audio
69  * @param plm plm
70  * @param samples samples
71  * @param user user data
72  */
73  static void plmOnAudio(plm_t* plm, plm_samples_t *samples, void *user);
74 
75 };
Byte buffer class.
Definition: ByteBuffer.h:27
PL_MPEG/MPEG1 video decoder.
Definition: MPEG1Decoder.h:28
int64_t readVideoFromStream(ByteBuffer *data) override
Read raw RGB video data from stream.
void close() override
Closes the audio file.
int64_t readAudioFromStream(ByteBuffer *data) override
Read raw PCM data from stream.
unique_ptr< ByteBuffer > audioBuffer
Definition: MPEG1Decoder.h:57
void update(float deltaTime) override
Update.
unique_ptr< ByteBuffer > videoBuffer
Definition: MPEG1Decoder.h:56
void seek(float time) override
Update.
static void plmOnVideo(plm_t *plm, plm_frame_t *frame, void *user)
PLM on video.
virtual ~MPEG1Decoder()
Destructor.
Definition: MPEG1Decoder.h:41
void reset() override
Resets this video decoder, if a stream was open it will be rewinded.
void openFile(const string &pathName, const string &fileName) override
Open a local file.
static void plmOnAudio(plm_t *plm, plm_samples_t *samples, void *user)
PLM on audio.
Video decoder base class.
Definition: VideoDecoder.h:18
#define FORBID_CLASS_COPY(CLASS)
Definition: tdme.h:6