summaryrefslogtreecommitdiff
path: root/omxdevice.h
diff options
context:
space:
mode:
authorThomas Reufer <thomas@reufer.ch>2014-02-10 21:53:25 +0100
committerThomas Reufer <thomas@reufer.ch>2014-02-10 21:53:25 +0100
commit0094472cda6eefa9b5363ad844daf0fcfd00c326 (patch)
treeb577f931820ef3899da856f9ccd0de04f4c8ffa8 /omxdevice.h
parent88f137d194b1768344e954a1b1d35fb1fce03df9 (diff)
downloadvdr-plugin-rpihddevice-0.0.8.tar.gz
vdr-plugin-rpihddevice-0.0.8.tar.bz2
2014-02-10: Version 0.0.80.0.8
------------------------- - new: - image grabbing - implemented proper handling in case of buffer stall - reporting video size - support letter box and center cut out set by VDR - support video scaling - fixed: - increased number of audio buffer to fix replay issues with PES recordings - return correct number of audio bytes written from PlayAudio() - fixed start up in audio only mode - fixed still image with deinterlacer - fixed crash during deinitialization - fixed crash when copying 5.1 PCM audio - use cThread::mutex for locking - implement cOvgOsd::SetAreas() and cOvgOsd::SetActive() - audio codec clean up, drop AAC-LATM and rename ADTS to AAC - audio decoding thread clean up - known issues - StillImage() will cause buffer stall - artifacts with StillImage() and PES recordings - speed to fast when fast replaying audio only recordings
Diffstat (limited to 'omxdevice.h')
-rw-r--r--omxdevice.h20
1 files changed, 15 insertions, 5 deletions
diff --git a/omxdevice.h b/omxdevice.h
index d28543e..ac77823 100644
--- a/omxdevice.h
+++ b/omxdevice.h
@@ -9,7 +9,7 @@
#include <vdr/device.h>
-#include "types.h"
+#include "tools.h"
class cOmx;
class cAudioDecoder;
@@ -26,10 +26,17 @@ public:
virtual int Init(void);
virtual int DeInit(void);
- virtual bool HasDecoder(void) const { return true; };
- virtual bool CanReplay(void) const { return true; };
+ virtual bool HasDecoder(void) const { return true; }
+ virtual bool CanReplay(void) const { return true; }
+ virtual bool HasIBPTrickSpeed(void) { return true; }
virtual void GetOsdSize(int &Width, int &Height, double &PixelAspect);
+ virtual void GetVideoSize(int &Width, int &Height, double &VideoAspect);
+ virtual void SetVideoDisplayFormat(eVideoDisplayFormat VideoDisplayFormat);
+
+ virtual cRect CanScaleVideo(const cRect &Rect, int Alignment = taCenter)
+ { return Rect; }
+ virtual void ScaleVideo(const cRect &Rect = cRect::Null);
virtual bool SetPlayMode(ePlayMode PlayMode);
@@ -43,7 +50,7 @@ public:
virtual int64_t GetSTC(void);
- virtual bool HasIBPTrickSpeed(void) { return true; }
+ virtual uchar *GrabImage(int &Size, bool Jpeg = true, int Quality = -1, int SizeX = -1, int SizeY = -1);
#if APIVERSNUM >= 20103
virtual void TrickSpeed(int Speed, bool Forward);
@@ -57,7 +64,6 @@ public:
virtual void SetVolumeDevice(int Volume);
- virtual bool Flush(int TimeoutMs = 0);
virtual bool Poll(cPoller &Poller, int TimeoutMs = 0);
protected:
@@ -69,6 +75,10 @@ private:
void (*m_onPrimaryDevice)(void);
virtual cVideoCodec::eCodec ParseVideoCodec(const uchar *data, int length);
+ static void OnBufferStall(void *data)
+ { (static_cast <cOmxDevice*> (data))->HandleBufferStall(); }
+
+ void HandleBufferStall();
void ResetAudioVideo(bool flushVideoRender = false);
void ApplyTrickSpeed(int trickSpeed, bool forward = true);