Merge pull request #21 from dnehring7/master

Fix indentation.
This commit is contained in:
jojo61 2019-11-19 13:15:27 +00:00 committed by GitHub
commit 5cd68b6eed
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 413 additions and 411 deletions

184
codec.c
View File

@ -129,13 +129,13 @@ struct _video_decoder_
//----------------------------------------------------------------------------
/**
** Callback to negotiate the PixelFormat.
** Callback to negotiate the PixelFormat.
**
** @param video_ctx codec context
** @param fmt is the list of formats which are supported by
** the codec, it is terminated by -1 as 0 is a
** valid format, the formats are ordered by
** quality.
** @param video_ctx codec context
** @param fmt is the list of formats which are supported by
** the codec, it is terminated by -1 as 0 is a
** valid format, the formats are ordered by
** quality.
*/
static enum AVPixelFormat Codec_get_format(AVCodecContext * video_ctx, const enum AVPixelFormat *fmt)
{
@ -157,12 +157,12 @@ static enum AVPixelFormat Codec_get_format(AVCodecContext * video_ctx, const enu
// static void Codec_free_buffer(void *opaque, uint8_t *data);
/**
** Video buffer management, get buffer for frame.
** Video buffer management, get buffer for frame.
**
** Called at the beginning of each frame to get a buffer for it.
** Called at the beginning of each frame to get a buffer for it.
**
** @param video_ctx Codec context
** @param frame Get buffer for this frame
** @param video_ctx Codec context
** @param frame Get buffer for this frame
*/
static int Codec_get_buffer2(AVCodecContext * video_ctx, AVFrame * frame, int flags)
{
@ -195,11 +195,11 @@ static int Codec_get_buffer2(AVCodecContext * video_ctx, AVFrame * frame, int fl
//----------------------------------------------------------------------------
/**
** Allocate a new video decoder context.
** Allocate a new video decoder context.
**
** @param hw_decoder video hardware decoder
** @param hw_decoder video hardware decoder
**
** @returns private decoder pointer for video decoder.
** @returns private decoder pointer for video decoder.
*/
VideoDecoder *CodecVideoNewDecoder(VideoHwDecoder * hw_decoder)
{
@ -214,9 +214,9 @@ VideoDecoder *CodecVideoNewDecoder(VideoHwDecoder * hw_decoder)
}
/**
** Deallocate a video decoder context.
** Deallocate a video decoder context.
**
** @param decoder private video decoder
** @param decoder private video decoder
*/
void CodecVideoDelDecoder(VideoDecoder * decoder)
{
@ -224,10 +224,10 @@ void CodecVideoDelDecoder(VideoDecoder * decoder)
}
/**
** Open video decoder.
** Open video decoder.
**
** @param decoder private video decoder
** @param codec_id video codec id
** @param decoder private video decoder
** @param codec_id video codec id
*/
void CodecVideoOpen(VideoDecoder * decoder, int codec_id)
{
@ -393,9 +393,9 @@ void CodecVideoOpen(VideoDecoder * decoder, int codec_id)
}
/**
** Close video decoder.
** Close video decoder.
**
** @param video_decoder private video decoder
** @param video_decoder private video decoder
*/
void CodecVideoClose(VideoDecoder * video_decoder)
{
@ -423,15 +423,15 @@ void CodecVideoClose(VideoDecoder * video_decoder)
#if 0
/**
** Display pts...
** Display pts...
**
** ffmpeg-0.9 pts always AV_NOPTS_VALUE
** ffmpeg-0.9 pkt_pts nice monotonic (only with HD)
** ffmpeg-0.9 pkt_dts wild jumping -160 - 340 ms
** ffmpeg-0.9 pts always AV_NOPTS_VALUE
** ffmpeg-0.9 pkt_pts nice monotonic (only with HD)
** ffmpeg-0.9 pkt_dts wild jumping -160 - 340 ms
**
** libav 0.8_pre20111116 pts always AV_NOPTS_VALUE
** libav 0.8_pre20111116 pkt_pts always 0 (could be fixed?)
** libav 0.8_pre20111116 pkt_dts wild jumping -160 - 340 ms
** libav 0.8_pre20111116 pts always AV_NOPTS_VALUE
** libav 0.8_pre20111116 pkt_pts always 0 (could be fixed?)
** libav 0.8_pre20111116 pkt_dts wild jumping -160 - 340 ms
*/
void DisplayPts(AVCodecContext * video_ctx, AVFrame * frame)
{
@ -445,7 +445,7 @@ void DisplayPts(AVCodecContext * video_ctx, AVFrame * frame)
}
ms_delay = (1000 * video_ctx->time_base.num) / video_ctx->time_base.den;
ms_delay += frame->repeat_pict * ms_delay / 2;
printf("codec: PTS %s%s %" PRId64 " %d %d/%d %d/%d %dms\n", frame->repeat_pict ? "r" : " ",
printf("codec: PTS %s%s %" PRId64 " %d %d/%d %d/%d %dms\n", frame->repeat_pict ? "r" : " ",
frame->interlaced_frame ? "I" : " ", pts, (int)(pts - last_pts) / 90, video_ctx->time_base.num,
video_ctx->time_base.den, video_ctx->framerate.num, video_ctx->framerate.den, ms_delay);
@ -457,10 +457,10 @@ void DisplayPts(AVCodecContext * video_ctx, AVFrame * frame)
#endif
/**
** Decode a video packet.
** Decode a video packet.
**
** @param decoder video decoder data
** @param avpkt video packet
** @param decoder video decoder data
** @param avpkt video packet
*/
extern int CuvidTestSurfaces();
@ -599,9 +599,9 @@ void CodecVideoDecode(VideoDecoder * decoder, const AVPacket * avpkt)
#endif
/**
** Flush the video decoder.
** Flush the video decoder.
**
** @param decoder video decoder data
** @param decoder video decoder data
*/
void CodecVideoFlushBuffers(VideoDecoder * decoder)
{
@ -686,8 +686,8 @@ enum IEC61937
};
#ifdef USE_AUDIO_DRIFT_CORRECTION
#define CORRECT_PCM 1 ///< do PCM audio-drift correction
#define CORRECT_AC3 2 ///< do AC-3 audio-drift correction
#define CORRECT_PCM 1 ///< do PCM audio-drift correction
#define CORRECT_AC3 2 ///< do AC-3 audio-drift correction
static char CodecAudioDrift; ///< flag: enable audio-drift correction
#else
static const int CodecAudioDrift = 0;
@ -703,9 +703,9 @@ static const int CodecPassthrough = 0;
static char CodecDownmix; ///< enable AC-3 decoder downmix
/**
** Allocate a new audio decoder context.
** Allocate a new audio decoder context.
**
** @returns private decoder pointer for audio decoder.
** @returns private decoder pointer for audio decoder.
*/
AudioDecoder *CodecAudioNewDecoder(void)
{
@ -722,9 +722,9 @@ AudioDecoder *CodecAudioNewDecoder(void)
}
/**
** Deallocate an audio decoder context.
** Deallocate an audio decoder context.
**
** @param decoder private audio decoder
** @param decoder private audio decoder
*/
void CodecAudioDelDecoder(AudioDecoder * decoder)
{
@ -733,10 +733,10 @@ void CodecAudioDelDecoder(AudioDecoder * decoder)
}
/**
** Open audio decoder.
** Open audio decoder.
**
** @param audio_decoder private audio decoder
** @param codec_id audio codec id
** @param audio_decoder private audio decoder
** @param codec_id audio codec id
*/
void CodecAudioOpen(AudioDecoder * audio_decoder, int codec_id)
{
@ -784,9 +784,9 @@ void CodecAudioOpen(AudioDecoder * audio_decoder, int codec_id)
}
/**
** Close audio decoder.
** Close audio decoder.
**
** @param audio_decoder private audio decoder
** @param audio_decoder private audio decoder
*/
void CodecAudioClose(AudioDecoder * audio_decoder)
{
@ -831,9 +831,9 @@ void CodecAudioClose(AudioDecoder * audio_decoder)
}
/**
** Set audio drift correction.
** Set audio drift correction.
**
** @param mask enable mask (PCM, AC-3)
** @param mask enable mask (PCM, AC-3)
*/
void CodecSetAudioDrift(int mask)
{
@ -844,9 +844,9 @@ void CodecSetAudioDrift(int mask)
}
/**
** Set audio pass-through.
** Set audio pass-through.
**
** @param mask enable mask (PCM, AC-3, E-AC-3)
** @param mask enable mask (PCM, AC-3, E-AC-3)
*/
void CodecSetAudioPassthrough(int mask)
{
@ -857,9 +857,9 @@ void CodecSetAudioPassthrough(int mask)
}
/**
** Set audio downmix.
** Set audio downmix.
**
** @param onoff enable/disable downmix.
** @param onoff enable/disable downmix.
*/
void CodecSetAudioDownmix(int onoff)
{
@ -871,15 +871,15 @@ void CodecSetAudioDownmix(int onoff)
}
/**
** Reorder audio frame.
** Reorder audio frame.
**
** ffmpeg L R C Ls Rs -> alsa L R Ls Rs C
** ffmpeg L R C LFE Ls Rs -> alsa L R Ls Rs C LFE
** ffmpeg L R C LFE Ls Rs Rl Rr -> alsa L R Ls Rs C LFE Rl Rr
** ffmpeg L R C Ls Rs -> alsa L R Ls Rs C
** ffmpeg L R C LFE Ls Rs -> alsa L R Ls Rs C LFE
** ffmpeg L R C LFE Ls Rs Rl Rr -> alsa L R Ls Rs C LFE Rl Rr
**
** @param buf[IN,OUT] sample buffer
** @param size size of sample buffer in bytes
** @param channels number of channels interleaved in sample buffer
** @param buf[IN,OUT] sample buffer
** @param size size of sample buffer in bytes
** @param channels number of channels interleaved in sample buffer
*/
static void CodecReorderAudioFrame(int16_t * buf, int size, int channels)
{
@ -931,10 +931,10 @@ static void CodecReorderAudioFrame(int16_t * buf, int size, int channels)
}
/**
** Handle audio format changes helper.
** Handle audio format changes helper.
**
** @param audio_decoder audio decoder data
** @param[out] passthrough pass-through output
** @param audio_decoder audio decoder data
** @param[out] passthrough pass-through output
*/
static int CodecAudioUpdateHelper(AudioDecoder * audio_decoder, int *passthrough)
{
@ -991,10 +991,10 @@ static int CodecAudioUpdateHelper(AudioDecoder * audio_decoder, int *passthrough
}
/**
** Audio pass-through decoder helper.
** Audio pass-through decoder helper.
**
** @param audio_decoder audio decoder data
** @param avpkt undecoded audio packet
** @param audio_decoder audio decoder data
** @param avpkt undecoded audio packet
*/
static int CodecAudioPassthroughHelper(AudioDecoder * audio_decoder, const AVPacket * avpkt)
{
@ -1106,10 +1106,10 @@ static int CodecAudioPassthroughHelper(AudioDecoder * audio_decoder, const AVPac
#if !defined(USE_SWRESAMPLE) && !defined(USE_AVRESAMPLE)
/**
** Set/update audio pts clock.
** Set/update audio pts clock.
**
** @param audio_decoder audio decoder data
** @param pts presentation timestamp
** @param audio_decoder audio decoder data
** @param pts presentation timestamp
*/
static void CodecAudioSetClock(AudioDecoder * audio_decoder, int64_t pts)
{
@ -1206,11 +1206,11 @@ static void CodecAudioSetClock(AudioDecoder * audio_decoder, int64_t pts)
}
/**
** Handle audio format changes.
** Handle audio format changes.
**
** @param audio_decoder audio decoder data
** @param audio_decoder audio decoder data
**
** @note this is the old not good supported version
** @note this is the old not good supported version
*/
static void CodecAudioUpdateFormat(AudioDecoder * audio_decoder)
{
@ -1277,11 +1277,11 @@ static void CodecAudioUpdateFormat(AudioDecoder * audio_decoder)
}
/**
** Codec enqueue audio samples.
** Codec enqueue audio samples.
**
** @param audio_decoder audio decoder data
** @param data samples data
** @param count number of bytes in sample data
** @param audio_decoder audio decoder data
** @param data samples data
** @param count number of bytes in sample data
*/
void CodecAudioEnqueue(AudioDecoder * audio_decoder, int16_t * data, int count)
{
@ -1410,12 +1410,12 @@ int myavcodec_decode_audio3(AVCodecContext * avctx, int16_t * samples, int *fram
}
/**
** Decode an audio packet.
** Decode an audio packet.
**
** PTS must be handled self.
** PTS must be handled self.
**
** @param audio_decoder audio decoder data
** @param avpkt audio packet
** @param audio_decoder audio decoder data
** @param avpkt audio packet
*/
void CodecAudioDecode(AudioDecoder * audio_decoder, const AVPacket * avpkt)
{
@ -1486,10 +1486,10 @@ void CodecAudioDecode(AudioDecoder * audio_decoder, const AVPacket * avpkt)
#if defined(USE_SWRESAMPLE) || defined(USE_AVRESAMPLE)
/**
** Set/update audio pts clock.
** Set/update audio pts clock.
**
** @param audio_decoder audio decoder data
** @param pts presentation timestamp
** @param audio_decoder audio decoder data
** @param pts presentation timestamp
*/
static void CodecAudioSetClock(AudioDecoder * audio_decoder, int64_t pts)
{
@ -1604,9 +1604,9 @@ static void CodecAudioSetClock(AudioDecoder * audio_decoder, int64_t pts)
}
/**
** Handle audio format changes.
** Handle audio format changes.
**
** @param audio_decoder audio decoder data
** @param audio_decoder audio decoder data
*/
static void CodecAudioUpdateFormat(AudioDecoder * audio_decoder)
{
@ -1665,14 +1665,14 @@ static void CodecAudioUpdateFormat(AudioDecoder * audio_decoder)
}
/**
** Decode an audio packet.
** Decode an audio packet.
**
** PTS must be handled self.
** PTS must be handled self.
**
** @note the caller has not aligned avpkt and not cleared the end.
** @note the caller has not aligned avpkt and not cleared the end.
**
** @param audio_decoder audio decoder data
** @param avpkt audio packet
** @param audio_decoder audio decoder data
** @param avpkt audio packet
*/
void CodecAudioDecode(AudioDecoder * audio_decoder, const AVPacket * avpkt)
@ -1737,9 +1737,9 @@ void CodecAudioDecode(AudioDecoder * audio_decoder, const AVPacket * avpkt)
#endif
/**
** Flush the audio decoder.
** Flush the audio decoder.
**
** @param decoder audio decoder data
** @param decoder audio decoder data
*/
void CodecAudioFlushBuffers(AudioDecoder * decoder)
{
@ -1751,7 +1751,7 @@ void CodecAudioFlushBuffers(AudioDecoder * decoder)
//----------------------------------------------------------------------------
/**
** Empty log callback
** Empty log callback
*/
static void CodecNoopCallback( __attribute__((unused))
void *ptr, __attribute__((unused))
@ -1761,7 +1761,7 @@ static void CodecNoopCallback( __attribute__((unused))
}
/**
** Codec init
** Codec init
*/
void CodecInit(void)
{
@ -1776,7 +1776,7 @@ void CodecInit(void)
}
/**
** Codec exit.
** Codec exit.
*/
void CodecExit(void)
{

View File

@ -213,109 +213,108 @@ class cSoftRemote:public cRemote, private cThread
public:
/**
** Soft device remote class constructor.
** Soft device remote class constructor.
**
** @param name remote name
** @param name remote name
*/
cSoftRemote(void) : cRemote("XKeySym")
cSoftRemote(void):cRemote("XKeySym")
{
Start();
Start();
}
virtual ~cSoftRemote()
virtual ~ cSoftRemote()
{
Cancel(3);
Cancel(3);
}
/**
** Receive keycode.
** Receive keycode.
**
** @param code key code
** @param code key code
*/
void Receive(const char *code) {
cMutexLock MutexLock(&mutex);
Command = code;
keyReceived.Broadcast();
void Receive(const char *code)
{
cMutexLock MutexLock(&mutex);
Command = code;
keyReceived.Broadcast();
}
};
void cSoftRemote::Action(void)
{
// see also VDR's cKbdRemote::Action()
cTimeMs FirstTime;
cTimeMs LastTime;
cString FirstCommand = "";
cString LastCommand = "";
bool Delayed = false;
bool Repeat = false;
// see also VDR's cKbdRemote::Action()
cTimeMs FirstTime;
cTimeMs LastTime;
cString FirstCommand = "";
cString LastCommand = "";
bool Delayed = false;
bool Repeat = false;
while (Running()) {
while (Running()) {
cMutexLock MutexLock(&mutex);
if (keyReceived.TimedWait(mutex, Setup.RcRepeatDelta * 3 / 2) && **Command) {
if (strcmp(Command, LastCommand) == 0) {
// If two keyboard events with the same command come in without an intermediate
// timeout, this is a long key press that caused the repeat function to kick in:
Delayed = false;
FirstCommand = "";
if (FirstTime.Elapsed() < (uint)Setup.RcRepeatDelay)
continue; // repeat function kicks in after a short delay
if (LastTime.Elapsed() < (uint)Setup.RcRepeatDelta)
continue; // skip same keys coming in too fast
cRemote::Put(Command, true);
Repeat = true;
LastTime.Set();
}
else if (strcmp(Command, FirstCommand) == 0) {
// If the same command comes in twice with an intermediate timeout, we
// need to delay the second command to see whether it is going to be
// a repeat function or a separate key press:
Delayed = true;
}
else {
// This is a totally new key press, so we accept it immediately:
cRemote::Put(Command);
Delayed = false;
FirstCommand = Command;
FirstTime.Set();
}
}
else if (Repeat) {
// Timeout after a repeat function, so we generate a 'release':
cRemote::Put(LastCommand, false, true);
Repeat = false;
}
else if (Delayed && *FirstCommand) {
// Timeout after two normal key presses of the same key, so accept the
// delayed key:
cRemote::Put(FirstCommand);
Delayed = false;
FirstCommand = "";
FirstTime.Set();
}
else if (**FirstCommand && FirstTime.Elapsed() > (uint)Setup.RcRepeatDelay) {
Delayed = false;
FirstCommand = "";
FirstTime.Set();
}
if (strcmp(Command, LastCommand) == 0) {
// If two keyboard events with the same command come in without an intermediate
// timeout, this is a long key press that caused the repeat function to kick in:
Delayed = false;
FirstCommand = "";
if (FirstTime.Elapsed() < (uint) Setup.RcRepeatDelay)
continue; // repeat function kicks in after a short delay
if (LastTime.Elapsed() < (uint) Setup.RcRepeatDelta)
continue; // skip same keys coming in too fast
cRemote::Put(Command, true);
Repeat = true;
LastTime.Set();
} else if (strcmp(Command, FirstCommand) == 0) {
// If the same command comes in twice with an intermediate timeout, we
// need to delay the second command to see whether it is going to be
// a repeat function or a separate key press:
Delayed = true;
} else {
// This is a totally new key press, so we accept it immediately:
cRemote::Put(Command);
Delayed = false;
FirstCommand = Command;
FirstTime.Set();
}
} else if (Repeat) {
// Timeout after a repeat function, so we generate a 'release':
cRemote::Put(LastCommand, false, true);
Repeat = false;
} else if (Delayed && *FirstCommand) {
// Timeout after two normal key presses of the same key, so accept the
// delayed key:
cRemote::Put(FirstCommand);
Delayed = false;
FirstCommand = "";
FirstTime.Set();
} else if (**FirstCommand && FirstTime.Elapsed() > (uint) Setup.RcRepeatDelay) {
Delayed = false;
FirstCommand = "";
FirstTime.Set();
}
LastCommand = Command;
Command = "";
}
}
}
static cSoftRemote *csoft = NULL;
/**
** Feed key press as remote input (called from C part).
** Feed key press as remote input (called from C part).
**
** @param keymap target keymap "XKeymap" name (obsolete, ignored)
** @param key pressed/released key name
** @param repeat repeated key flag (obsolete, ignored)
** @param release released key flag (obsolete, ignored)
** @param letter x11 character string (system setting locale)
** @param keymap target keymap "XKeymap" name (obsolete, ignored)
** @param key pressed/released key name
** @param repeat repeated key flag (obsolete, ignored)
** @param release released key flag (obsolete, ignored)
** @param letter x11 character string (system setting locale)
*/
extern "C" void FeedKeyPress(const char *keymap, const char *key, int repeat, int release, const char *letter)
{
if (!csoft || !keymap || !key) {
return;
return;
}
csoft->Receive(key);
@ -3115,7 +3114,7 @@ bool cPluginSoftHdDevice::Start(void)
}
}
csoft = new cSoftRemote;
csoft = new cSoftRemote;
switch (::Start()) {
case 1:
@ -3144,7 +3143,8 @@ void cPluginSoftHdDevice::Stop(void)
// dsyslog("[softhddev]%s:\n", __FUNCTION__);
::Stop();
delete csoft;
delete csoft;
csoft = NULL;
}

View File

@ -515,7 +515,7 @@ enum
#define PES_START_CODE_SIZE 6 ///< size of pes start code with length
#define PES_HEADER_SIZE 9 ///< size of pes header
#define PES_MAX_HEADER_SIZE (PES_HEADER_SIZE + 256) ///< maximal header size
#define PES_MAX_PAYLOAD (512 * 1024) ///< max pay load size
#define PES_MAX_PAYLOAD (512 * 1024) ///< max pay load size
///
/// PES demuxer.
@ -885,9 +885,9 @@ static void PesParse(PesDemux * pesdx, const uint8_t * data, int size, int is_st
//////////////////////////////////////////////////////////////////////////////
/// Transport stream packet size
#define TS_PACKET_SIZE 188
#define TS_PACKET_SIZE 188
/// Transport stream packet sync byte
#define TS_PACKET_SYNC 0x47
#define TS_PACKET_SYNC 0x47
///
/// transport stream demuxer typedef.
@ -982,11 +982,11 @@ static int TsDemuxer(TsDemux * tsdx, const uint8_t * data, int size)
#endif
/**
** Play audio packet.
** Play audio packet.
**
** @param data data of exactly one complete PES packet
** @param size size of PES packet
** @param id PES packet type
** @param data data of exactly one complete PES packet
** @param size size of PES packet
** @param id PES packet type
*/
int PlayAudio(const uint8_t * data, int size, uint8_t id)
{
@ -1211,14 +1211,14 @@ int PlayAudio(const uint8_t * data, int size, uint8_t id)
#ifndef NO_TS_AUDIO
/**
** Play transport stream audio packet.
** Play transport stream audio packet.
**
** VDR can have buffered data belonging to previous channel!
** VDR can have buffered data belonging to previous channel!
**
** @param data data of exactly one complete TS packet
** @param size size of TS packet (always TS_PACKET_SIZE)
** @param data data of exactly one complete TS packet
** @param size size of TS packet (always TS_PACKET_SIZE)
**
** @returns number of bytes consumed;
** @returns number of bytes consumed;
*/
int PlayTsAudio(const uint8_t * data, int size)
{
@ -1265,9 +1265,9 @@ int PlayTsAudio(const uint8_t * data, int size)
#endif
/**
** Set volume of audio device.
** Set volume of audio device.
**
** @param volume VDR volume (0 .. 255)
** @param volume VDR volume (0 .. 255)
*/
void SetVolumeDevice(int volume)
{
@ -1275,7 +1275,7 @@ void SetVolumeDevice(int volume)
}
/**
*** Resets channel ID (restarts audio).
*** Resets channel ID (restarts audio).
**/
void ResetChannelId(void)
{
@ -1291,7 +1291,7 @@ void ResetChannelId(void)
#define VIDEO_PACKET_MAX 256 ///< max number of video packets 192
/**
** Video output stream device structure. Parser, decoder, display.
** Video output stream device structure. Parser, decoder, display.
*/
struct __video_stream__
{
@ -1344,9 +1344,9 @@ static volatile char Usr1Signal; ///< true got usr1 signal
//////////////////////////////////////////////////////////////////////////////
/**
** Initialize video packet ringbuffer.
** Initialize video packet ringbuffer.
**
** @param stream video stream
** @param stream video stream
*/
static void VideoPacketInit(VideoStream * stream)
{
@ -1367,9 +1367,9 @@ static void VideoPacketInit(VideoStream * stream)
}
/**
** Cleanup video packet ringbuffer.
** Cleanup video packet ringbuffer.
**
** @param stream video stream
** @param stream video stream
*/
static void VideoPacketExit(VideoStream * stream)
{
@ -1383,12 +1383,12 @@ static void VideoPacketExit(VideoStream * stream)
}
/**
** Place video data in packet ringbuffer.
** Place video data in packet ringbuffer.
**
** @param stream video stream
** @param pts presentation timestamp of pes packet
** @param data data of pes packet
** @param size size of pes packet
** @param stream video stream
** @param pts presentation timestamp of pes packet
** @param data data of pes packet
** @param size size of pes packet
*/
static void VideoEnqueue(VideoStream * stream, int64_t pts, int64_t dts, const void *data, int size)
{
@ -1431,9 +1431,9 @@ static void VideoEnqueue(VideoStream * stream, int64_t pts, int64_t dts, const v
}
/**
** Reset current packet.
** Reset current packet.
**
** @param stream video stream
** @param stream video stream
*/
static void VideoResetPacket(VideoStream * stream)
{
@ -1449,10 +1449,10 @@ static void VideoResetPacket(VideoStream * stream)
}
/**
** Finish current packet advance to next.
** Finish current packet advance to next.
**
** @param stream video stream
** @param codec_id codec id of packet (MPEG/H264)
** @param stream video stream
** @param codec_id codec id of packet (MPEG/H264)
*/
static void VideoNextPacket(VideoStream * stream, int codec_id)
{
@ -1493,18 +1493,18 @@ static void VideoNextPacket(VideoStream * stream, int codec_id)
#ifdef USE_PIP
/**
** Place mpeg video data in packet ringbuffer.
** Place mpeg video data in packet ringbuffer.
**
** Some tv-stations sends mulitple pictures in a single PES packet.
** Split the packet into single picture packets.
** Nick/CC, Viva, MediaShop, Deutsches Music Fernsehen
** Some tv-stations sends mulitple pictures in a single PES packet.
** Split the packet into single picture packets.
** Nick/CC, Viva, MediaShop, Deutsches Music Fernsehen
**
** FIXME: this code can be written much faster
** FIXME: this code can be written much faster
**
** @param stream video stream
** @param pts presentation timestamp of pes packet
** @param data data of pes packet
** @param size size of pes packet
** @param stream video stream
** @param pts presentation timestamp of pes packet
** @param data data of pes packet
** @param size size of pes packet
*/
static void VideoMpegEnqueue(VideoStream * stream, int64_t pts, int64_t dts, const uint8_t * data, int size)
{
@ -1533,7 +1533,7 @@ static void VideoMpegEnqueue(VideoStream * stream, int64_t pts, int64_t dts, con
#endif
if (!p[0] || p[0] == 0xb3) {
#ifdef DEBUG
printf("last: %d start aspect %02x\n", stream->StartCodeState, p[4]);
printf("last: %d start aspect %02x\n", stream->StartCodeState, p[4]);
#endif
stream->PacketRb[stream->PacketWrite].stream_index -= 3;
VideoNextPacket(stream, AV_CODEC_ID_MPEG2VIDEO);
@ -1551,7 +1551,7 @@ static void VideoMpegEnqueue(VideoStream * stream, int64_t pts, int64_t dts, con
#endif
if (p[0] == 0x01 && (!p[1] || p[1] == 0xb3)) {
#ifdef DEBUG
printf("last: %d start aspect %02x\n", stream->StartCodeState, p[5]);
printf("last: %d start aspect %02x\n", stream->StartCodeState, p[5]);
#endif
stream->PacketRb[stream->PacketWrite].stream_index -= 2;
VideoNextPacket(stream, AV_CODEC_ID_MPEG2VIDEO);
@ -1568,7 +1568,7 @@ static void VideoMpegEnqueue(VideoStream * stream, int64_t pts, int64_t dts, con
#endif
if (!p[0] && p[1] == 0x01 && (!p[2] || p[2] == 0xb3)) {
#ifdef DEBUG
printf("last: %d start aspect %02x\n", stream->StartCodeState, p[6]);
printf("last: %d start aspect %02x\n", stream->StartCodeState, p[6]);
#endif
stream->PacketRb[stream->PacketWrite].stream_index -= 1;
VideoNextPacket(stream, AV_CODEC_ID_MPEG2VIDEO);
@ -1650,19 +1650,19 @@ static void VideoMpegEnqueue(VideoStream * stream, int64_t pts, int64_t dts, con
#endif
/**
** Fix packet for FFMpeg.
** Fix packet for FFMpeg.
**
** Some tv-stations sends mulitple pictures in a single PES packet.
** Current ffmpeg 0.10 and libav-0.8 has problems with this.
** Split the packet into single picture packets.
** Some tv-stations sends mulitple pictures in a single PES packet.
** Current ffmpeg 0.10 and libav-0.8 has problems with this.
** Split the packet into single picture packets.
**
** FIXME: there are stations which have multiple pictures and
** the last picture incomplete in the PES packet.
** FIXME: there are stations which have multiple pictures and
** the last picture incomplete in the PES packet.
**
** FIXME: move function call into PlayVideo, than the hardware
** decoder didn't need to support multiple frames decoding.
** FIXME: move function call into PlayVideo, than the hardware
** decoder didn't need to support multiple frames decoding.
**
** @param avpkt ffmpeg a/v packet
** @param avpkt ffmpeg a/v packet
*/
#ifndef USE_PIP
@ -1728,9 +1728,9 @@ static void FixPacketForFFMpeg(VideoDecoder * vdecoder, AVPacket * avpkt)
#endif
/**
** Open video stream.
** Open video stream.
**
** @param stream video stream
** @param stream video stream
*/
static void VideoStreamOpen(VideoStream * stream)
{
@ -1745,13 +1745,13 @@ static void VideoStreamOpen(VideoStream * stream)
}
/**
** Close video stream.
** Close video stream.
**
** @param stream video stream
** @param delhw flag delete hardware decoder
** @param stream video stream
** @param delhw flag delete hardware decoder
**
** @note must be called from the video thread, otherwise xcb has a
** deadlock.
** @note must be called from the video thread, otherwise xcb has a
** deadlock.
*/
static void VideoStreamClose(VideoStream * stream, int delhw)
{
@ -1782,14 +1782,14 @@ static void VideoStreamClose(VideoStream * stream, int delhw)
}
/**
** Poll PES packet ringbuffer.
** Poll PES packet ringbuffer.
**
** Called if video frame buffers are full.
** Called if video frame buffers are full.
**
** @param stream video stream
** @param stream video stream
**
** @retval 1 something todo
** @retval -1 empty stream
** @retval 1 something todo
** @retval -1 empty stream
*/
int VideoPollInput(VideoStream * stream)
{
@ -1824,13 +1824,13 @@ int VideoPollInput(VideoStream * stream)
}
/**
** Decode from PES packet ringbuffer.
** Decode from PES packet ringbuffer.
**
** @param stream video stream
** @param stream video stream
**
** @retval 0 packet decoded
** @retval 1 stream paused
** @retval -1 empty stream
** @retval 0 packet decoded
** @retval 1 stream paused
** @retval -1 empty stream
*/
int VideoDecodeInput(VideoStream * stream)
{
@ -1975,9 +1975,9 @@ int VideoDecodeInput(VideoStream * stream)
}
/**
** Get number of video buffers.
** Get number of video buffers.
**
** @param stream video stream
** @param stream video stream
*/
int VideoGetBuffers(const VideoStream * stream)
{
@ -1985,9 +1985,9 @@ int VideoGetBuffers(const VideoStream * stream)
}
/**
** Try video start.
** Try video start.
**
** NOT TRUE: Could be called, when already started.
** NOT TRUE: Could be called, when already started.
*/
static void StartVideo(void)
{
@ -2005,7 +2005,7 @@ static void StartVideo(void)
}
/**
** Stop video.
** Stop video.
*/
static void StopVideo(void)
{
@ -2043,9 +2043,9 @@ static void StopVideo(void)
#ifdef DEBUG
/**
** Dump mpeg video packet.
** Dump mpeg video packet.
**
** Function to dump a mpeg packet, not needed.
** Function to dump a mpeg packet, not needed.
*/
static void DumpMpeg(const uint8_t * data, int size)
{
@ -2067,9 +2067,9 @@ static void DumpMpeg(const uint8_t * data, int size)
}
/**
** Dump h264 video packet.
** Dump h264 video packet.
**
** Function to Dump a h264 packet, not needed.
** Function to Dump a h264 packet, not needed.
*/
static int DumpH264(const uint8_t * data, int size)
{
@ -2091,9 +2091,9 @@ static int DumpH264(const uint8_t * data, int size)
}
/**
** Validate mpeg video packet.
** Validate mpeg video packet.
**
** Function to validate a mpeg packet, not needed.
** Function to validate a mpeg packet, not needed.
*/
static int ValidateMpeg(const uint8_t * data, int size)
{
@ -2126,13 +2126,13 @@ static int ValidateMpeg(const uint8_t * data, int size)
#endif
/**
** Play video packet.
** Play video packet.
**
** @param stream video stream
** @param data data of exactly one complete PES packet
** @param size size of PES packet
** @param stream video stream
** @param data data of exactly one complete PES packet
** @param size size of PES packet
**
** @return number of bytes used, 0 if internal buffer are full.
** @return number of bytes used, 0 if internal buffer are full.
**
*/
int PlayVideo3(VideoStream * stream, const uint8_t * data, int size)
@ -2352,20 +2352,20 @@ int PlayVideo3(VideoStream * stream, const uint8_t * data, int size)
}
/**
** Play video packet.
** Play video packet.
**
** @param data data of exactly one complete PES packet
** @param size size of PES packet
** @param data data of exactly one complete PES packet
** @param size size of PES packet
**
** @return number of bytes used, 0 if internal buffer are full.
** @return number of bytes used, 0 if internal buffer are full.
**
** @note vdr sends incomplete packets, va-api h264 decoder only
** supports complete packets.
** We buffer here until we receive an complete PES Packet, which
** is no problem, the audio is always far behind us.
** cTsToPes::GetPes splits the packets.
** @note vdr sends incomplete packets, va-api h264 decoder only
** supports complete packets.
** We buffer here until we receive an complete PES Packet, which
** is no problem, the audio is always far behind us.
** cTsToPes::GetPes splits the packets.
**
** @todo FIXME: combine the 5 ifs at start of the function
** @todo FIXME: combine the 5 ifs at start of the function
*/
int PlayVideo(const uint8_t * data, int size)
{
@ -2378,16 +2378,16 @@ extern uint8_t *CreateJpeg(uint8_t *, int *, int, int, int);
#if defined(USE_JPEG) && JPEG_LIB_VERSION >= 80
/**
** Create a jpeg image in memory.
** Create a jpeg image in memory.
**
** @param image raw RGB image
** @param raw_size size of raw image
** @param size[out] size of jpeg image
** @param quality jpeg quality
** @param width number of horizontal pixels in image
** @param height number of vertical pixels in image
** @param image raw RGB image
** @param raw_size size of raw image
** @param size[out] size of jpeg image
** @param quality jpeg quality
** @param width number of horizontal pixels in image
** @param height number of vertical pixels in image
**
** @returns allocated jpeg image.
** @returns allocated jpeg image.
*/
uint8_t *CreateJpeg(uint8_t * image, int raw_size, int *size, int quality, int width, int height)
{
@ -2429,13 +2429,13 @@ uint8_t *CreateJpeg(uint8_t * image, int raw_size, int *size, int quality, int w
#endif
/**
** Grabs the currently visible screen image.
** Grabs the currently visible screen image.
**
** @param size size of the returned data
** @param jpeg flag true, create JPEG data
** @param quality JPEG quality
** @param width number of horizontal pixels in the frame
** @param height number of vertical pixels in the frame
** @param size size of the returned data
** @param jpeg flag true, create JPEG data
** @param quality JPEG quality
** @param width number of horizontal pixels in the frame
** @param height number of vertical pixels in the frame
*/
uint8_t *GrabImage(int *size, int jpeg, int quality, int width, int height)
{
@ -2461,9 +2461,9 @@ uint8_t *GrabImage(int *size, int jpeg, int quality, int width, int height)
//////////////////////////////////////////////////////////////////////////////
/**
** Set play mode, called on channel switch.
** Set play mode, called on channel switch.
**
** @param play_mode play mode (none, video+audio, audio-only, ...)
** @param play_mode play mode (none, video+audio, audio-only, ...)
*/
int SetPlayMode(int play_mode)
{
@ -2514,8 +2514,8 @@ int SetPlayMode(int play_mode)
}
/**
** Gets the current System Time Counter, which can be used to
** synchronize audio, video and subtitles.
** Gets the current System Time Counter, which can be used to
** synchronize audio, video and subtitles.
*/
int64_t GetSTC(void)
{
@ -2528,11 +2528,11 @@ int64_t GetSTC(void)
}
/**
** Get video stream size and aspect.
** Get video stream size and aspect.
**
** @param width[OUT] width of video stream
** @param height[OUT] height of video stream
** @param aspect[OUT] aspect ratio (4/3, 16/9, ...) of video stream
** @param width[OUT] width of video stream
** @param height[OUT] height of video stream
** @param aspect[OUT] aspect ratio (4/3, 16/9, ...) of video stream
*/
void GetVideoSize(int *width, int *height, double *aspect)
{
@ -2562,12 +2562,12 @@ void GetVideoSize(int *width, int *height, double *aspect)
}
/**
** Set trick play speed.
** Set trick play speed.
**
** Every single frame shall then be displayed the given number of
** times.
** Every single frame shall then be displayed the given number of
** times.
**
** @param speed trick speed
** @param speed trick speed
*/
void TrickSpeed(int speed)
{
@ -2583,7 +2583,7 @@ void TrickSpeed(int speed)
}
/**
** Clears all video and audio data from the device.
** Clears all video and audio data from the device.
*/
void Clear(void)
{
@ -2606,7 +2606,7 @@ void Clear(void)
}
/**
** Sets the device into play mode.
** Sets the device into play mode.
*/
void Play(void)
{
@ -2616,7 +2616,7 @@ void Play(void)
}
/**
** Sets the device into "freeze frame" mode.
** Sets the device into "freeze frame" mode.
*/
void Freeze(void)
{
@ -2626,7 +2626,7 @@ void Freeze(void)
}
/**
** Turns off audio while replaying.
** Turns off audio while replaying.
*/
void Mute(void)
{
@ -2636,10 +2636,10 @@ void Mute(void)
}
/**
** Display the given I-frame as a still picture.
** Display the given I-frame as a still picture.
**
** @param data pes frame data
** @param size number of bytes in frame
** @param data pes frame data
** @param size number of bytes in frame
*/
void StillPicture(const uint8_t * data, int size)
{
@ -2746,17 +2746,17 @@ void StillPicture(const uint8_t * data, int size)
}
/**
** Poll if device is ready. Called by replay.
** Poll if device is ready. Called by replay.
**
** This function is useless, the return value is ignored and
** all buffers are overrun by vdr.
** This function is useless, the return value is ignored and
** all buffers are overrun by vdr.
**
** The dvd plugin is using this correct.
** The dvd plugin is using this correct.
**
** @param timeout timeout to become ready in ms
** @param timeout timeout to become ready in ms
**
** @retval true if ready
** @retval false if busy
** @retval true if ready
** @retval false if busy
*/
int Poll(int timeout)
{
@ -2789,9 +2789,9 @@ int Poll(int timeout)
}
/**
** Flush the device output buffers.
** Flush the device output buffers.
**
** @param timeout timeout to flush in ms
** @param timeout timeout to flush in ms
*/
int Flush(int timeout)
{
@ -2809,11 +2809,11 @@ int Flush(int timeout)
//////////////////////////////////////////////////////////////////////////////
/**
** Get OSD size and aspect.
** Get OSD size and aspect.
**
** @param width[OUT] width of OSD
** @param height[OUT] height of OSD
** @param aspect[OUT] aspect ratio (4/3, 16/9, ...) of OSD
** @param width[OUT] width of OSD
** @param height[OUT] height of OSD
** @param aspect[OUT] aspect ratio (4/3, 16/9, ...) of OSD
*/
void GetOsdSize(int *width, int *height, double *aspect)
{
@ -2835,7 +2835,7 @@ void GetOsdSize(int *width, int *height, double *aspect)
}
/**
** Close OSD.
** Close OSD.
*/
void OsdClose(void)
{
@ -2843,16 +2843,16 @@ void OsdClose(void)
}
/**
** Draw an OSD pixmap.
** Draw an OSD pixmap.
**
** @param xi x-coordinate in argb image
** @param yi y-coordinate in argb image
** @paran height height in pixel in argb image
** @paran width width in pixel in argb image
** @param pitch pitch of argb image
** @param argb 32bit ARGB image data
** @param x x-coordinate on screen of argb image
** @param y y-coordinate on screen of argb image
** @param xi x-coordinate in argb image
** @param yi y-coordinate in argb image
** @paran height height in pixel in argb image
** @paran width width in pixel in argb image
** @param pitch pitch of argb image
** @param argb 32bit ARGB image data
** @param x x-coordinate on screen of argb image
** @param y y-coordinate on screen of argb image
*/
void OsdDrawARGB(int xi, int yi, int height, int width, int pitch, const uint8_t * argb, int x, int y)
{
@ -2864,17 +2864,17 @@ void OsdDrawARGB(int xi, int yi, int height, int width, int pitch, const uint8_t
//////////////////////////////////////////////////////////////////////////////
/**
** Return command line help string.
** Return command line help string.
*/
const char *CommandLineHelp(void)
{
return " -a device\taudio device (fe. alsa: hw:0,0 oss: /dev/dsp)\n"
" -p device\taudio device for pass-through (hw:0,1 or /dev/dsp1)\n"
" -c channel\taudio mixer channel name (fe. PCM)\n" " -d display\tdisplay of x11 server (fe. :0.0)\n"
" -c channel\taudio mixer channel name (fe. PCM)\n" " -d display\tdisplay of x11 server (fe. :0.0)\n"
" -f\t\tstart with fullscreen window (only with window manager)\n"
" -g geometry\tx11 window geometry wxh+x+y\n" " -v device\tvideo driver device (cuvid)\n"
" -s\t\tstart in suspended mode\n" " -x\t\tstart x11 server, with -xx try to connect, if this fails\n"
" -X args\tX11 server arguments (f.e. -nocursor)\n" " -w workaround\tenable/disable workarounds\n"
" -X args\tX11 server arguments (f.e. -nocursor)\n" " -w workaround\tenable/disable workarounds\n"
"\tno-hw-decoder\t\tdisable hw decoder, use software decoder only\n"
"\tno-mpeg-hw-decoder\tdisable hw decoder for mpeg only\n"
"\tstill-hw-decoder\tenable hardware decoder for still-pictures\n"
@ -2883,14 +2883,14 @@ const char *CommandLineHelp(void)
"\talsa-no-close-open\tdisable close open to fix alsa no sound bug\n"
"\talsa-close-open-delay\tenable close open delay to fix no sound bug\n"
"\tignore-repeat-pict\tdisable repeat pict message\n"
"\tuse-possible-defect-frames prefer faster channel switch\n" " -D\t\tstart in detached mode\n";
"\tuse-possible-defect-frames prefer faster channel switch\n" " -D\t\tstart in detached mode\n";
}
/**
** Process the command line arguments.
** Process the command line arguments.
**
** @param argc number of arguments
** @param argv arguments vector
** @param argc number of arguments
** @param argv arguments vector
*/
int ProcessArgs(int argc, char *const argv[])
{
@ -3008,9 +3008,9 @@ static const char *X11Server = LOCALBASE "/bin/X"; ///< default x11 server
static pid_t X11ServerPid; ///< x11 server pid
/**
** USR1 signal handler.
** USR1 signal handler.
**
** @param sig signal number
** @param sig signal number
*/
static void Usr1Handler(int __attribute__((unused)) sig)
{
@ -3020,7 +3020,7 @@ static void Usr1Handler(int __attribute__((unused)) sig)
}
/**
** Start the X server
** Start the X server
*/
static void StartXServer(void)
{
@ -3104,7 +3104,7 @@ static void StartXServer(void)
}
/**
** Exit + cleanup.
** Exit + cleanup.
*/
void SoftHdDeviceExit(void)
{
@ -3164,11 +3164,11 @@ void SoftHdDeviceExit(void)
}
/**
** Prepare plugin.
** Prepare plugin.
**
** @retval 0 normal start
** @retval 1 suspended start
** @retval -1 detached start
** @retval 0 normal start
** @retval 1 suspended start
** @retval -1 detached start
*/
int Start(void)
{
@ -3210,9 +3210,9 @@ int Start(void)
}
/**
** Stop plugin.
** Stop plugin.
**
** @note stop everything, but don't cleanup, module is still called.
** @note stop everything, but don't cleanup, module is still called.
*/
void Stop(void)
{
@ -3222,7 +3222,7 @@ void Stop(void)
}
/**
** Perform any cleanup or other regular tasks.
** Perform any cleanup or other regular tasks.
*/
void Housekeeping(void)
{
@ -3252,7 +3252,7 @@ void Housekeeping(void)
}
/**
** Main thread hook, periodic called from main thread.
** Main thread hook, periodic called from main thread.
*/
void MainThreadHook(void)
{
@ -3273,11 +3273,11 @@ void MainThreadHook(void)
extern void DelPip(void);
/**
** Suspend plugin.
** Suspend plugin.
**
** @param video suspend closes video
** @param audio suspend closes audio
** @param dox11 suspend closes x11 server
** @param video suspend closes video
** @param audio suspend closes audio
** @param dox11 suspend closes x11 server
*/
void Suspend(int video, int audio, int dox11)
{
@ -3320,7 +3320,7 @@ void Suspend(int video, int audio, int dox11)
}
/**
** Resume plugin.
** Resume plugin.
*/
void Resume(void)
{
@ -3354,12 +3354,12 @@ void Resume(void)
}
/*
** Get decoder statistics.
** Get decoder statistics.
**
** @param[out] missed missed frames
** @param[out] duped duped frames
** @param[out] dropped dropped frames
** @param[out] count number of decoded frames
** @param[out] missed missed frames
** @param[out] duped duped frames
** @param[out] dropped dropped frames
** @param[out] count number of decoded frames
*/
void GetStats(int *missed, int *duped, int *dropped, int *counter, float *frametime)
{
@ -3374,12 +3374,12 @@ void GetStats(int *missed, int *duped, int *dropped, int *counter, float *framet
}
/**
** Scale the currently shown video.
** Scale the currently shown video.
**
** @param x video window x coordinate OSD relative
** @param y video window y coordinate OSD relative
** @param width video window width OSD relative
** @param height video window height OSD relative
** @param x video window x coordinate OSD relative
** @param y video window y coordinate OSD relative
** @param width video window width OSD relative
** @param height video window height OSD relative
*/
void ScaleVideo(int x, int y, int width, int height)
{
@ -3395,16 +3395,16 @@ void ScaleVideo(int x, int y, int width, int height)
#ifdef USE_PIP
/**
** Set PIP position.
** Set PIP position.
**
** @param x video window x coordinate OSD relative
** @param y video window y coordinate OSD relative
** @param width video window width OSD relative
** @param height video window height OSD relative
** @param pip_x pip window x coordinate OSD relative
** @param pip_y pip window y coordinate OSD relative
** @param pip_width pip window width OSD relative
** @param pip_height pip window height OSD relative
** @param x video window x coordinate OSD relative
** @param y video window y coordinate OSD relative
** @param width video window width OSD relative
** @param height video window height OSD relative
** @param pip_x pip window x coordinate OSD relative
** @param pip_y pip window y coordinate OSD relative
** @param pip_width pip window width OSD relative
** @param pip_height pip window height OSD relative
*/
void PipSetPosition(int x, int y, int width, int height, int pip_x, int pip_y, int pip_width, int pip_height)
{
@ -3420,16 +3420,16 @@ void PipSetPosition(int x, int y, int width, int height, int pip_x, int pip_y, i
}
/**
** Start PIP stream.
** Start PIP stream.
**
** @param x video window x coordinate OSD relative
** @param y video window y coordinate OSD relative
** @param width video window width OSD relative
** @param height video window height OSD relative
** @param pip_x pip window x coordinate OSD relative
** @param pip_y pip window y coordinate OSD relative
** @param pip_width pip window width OSD relative
** @param pip_height pip window height OSD relative
** @param x video window x coordinate OSD relative
** @param y video window y coordinate OSD relative
** @param width video window width OSD relative
** @param height video window height OSD relative
** @param pip_x pip window x coordinate OSD relative
** @param pip_y pip window y coordinate OSD relative
** @param pip_width pip window width OSD relative
** @param pip_height pip window height OSD relative
*/
void PipStart(int x, int y, int width, int height, int pip_x, int pip_y, int pip_width, int pip_height)
{
@ -3444,7 +3444,7 @@ void PipStart(int x, int y, int width, int height, int pip_x, int pip_y, int pip
}
/**
** Stop PIP.
** Stop PIP.
*/
void PipStop(void)
{
@ -3464,12 +3464,12 @@ void PipStop(void)
}
/**
** PIP play video packet.
** PIP play video packet.
**
** @param data data of exactly one complete PES packet
** @param size size of PES packet
** @param data data of exactly one complete PES packet
** @param size size of PES packet
**
** @return number of bytes used, 0 if internal buffer are full.
** @return number of bytes used, 0 if internal buffer are full.
*/
int PipPlayVideo(const uint8_t * data, int size)
{

76
video.c
View File

@ -848,13 +848,13 @@ char *eglErrorString(EGLint error)
void OSD_get_shared_context()
{
eglMakeCurrent(eglDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, eglSharedContext);
EglCheck();
EglCheck();
}
void OSD_get_context()
{
eglMakeCurrent(eglDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, OSDcontext);
EglCheck();
EglCheck();
}
void OSD_release_context()
@ -2855,11 +2855,12 @@ int get_RGB(CuvidDecoder * decoder)
glActiveTexture(GL_TEXTURE0);
if (OsdShown && decoder->grab == 2) {
int x,y,h,w;
int x, y, h, w;
GLint texLoc;
if (OsdShown == 1) {
if (OSDtexture)
glDeleteTextures(1,&OSDtexture);
glDeleteTextures(1, &OSDtexture);
pthread_mutex_lock(&OSDMutex);
glGenTextures(1, &OSDtexture);
glBindTexture(GL_TEXTURE_2D, OSDtexture);
@ -2872,11 +2873,11 @@ int get_RGB(CuvidDecoder * decoder)
OsdShown = 2;
}
y = OSDy*height/VideoWindowHeight;
x = OSDx*width/VideoWindowWidth;
h = OSDysize*height/VideoWindowHeight;
w = OSDxsize*width/VideoWindowWidth;
glViewport(x,(height - h - y) , w, h);
y = OSDy * height / VideoWindowHeight;
x = OSDx * width / VideoWindowWidth;
h = OSDysize * height / VideoWindowHeight;
w = OSDxsize * width / VideoWindowWidth;
glViewport(x, (height - h - y), w, h);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
@ -3643,21 +3644,21 @@ void make_osd_overlay(int x, int y, int width, int height)
// pl_tex_clear(p->gpu, pl->plane.texture, (float[4]) { 0 });
pl_tex_destroy(p->gpu, &pl->plane.texture);
}
// make texture for OSD
if (pl->plane.texture == NULL ) {
if (pl->plane.texture == NULL) {
pl->plane.texture = pl_tex_create(p->gpu, &(struct pl_tex_params) {
.w = width,
.h = height,
.d = 0,
.format = fmt,
.sampleable = true,
.host_writable = true,
.blit_dst = true,
.sample_mode = PL_TEX_SAMPLE_LINEAR,
.address_mode = PL_TEX_ADDRESS_CLAMP,
});
}
.w = width,
.h = height,
.d = 0,
.format = fmt,
.sampleable = true,
.host_writable = true,
.blit_dst = true,
.sample_mode = PL_TEX_SAMPLE_LINEAR,
.address_mode = PL_TEX_ADDRESS_CLAMP,
});
}
// make overlay
pl_tex_clear(p->gpu, pl->plane.texture, (float[4]) { 0 });
pl->plane.components = 4;
@ -3738,7 +3739,7 @@ static void CuvidDisplayFrame(void)
// printf("Roundtrip Displayframe %d\n",diff);
if (diff < 5000 && diff > 0) {
// printf("Sleep %d\n",15000-diff);
usleep((5000 - diff)); // * 1000);
usleep((5000 - diff)); // * 1000);
}
#endif
@ -3753,7 +3754,7 @@ static void CuvidDisplayFrame(void)
pl_swapchain_swap_buffers(p->swapchain); // swap buffers
}
#endif
first = 0;
last_time = GetusTicks();
@ -3878,12 +3879,13 @@ static void CuvidDisplayFrame(void)
if (OsdShown && valid_frame) {
GLint texLoc;
int x,y,w,h;
int x, y, w, h;
glBindTexture(GL_TEXTURE_2D, 0);
if (OsdShown == 1) {
if (OSDtexture)
glDeleteTextures(1,&OSDtexture);
pthread_mutex_lock(&OSDMutex);
glDeleteTextures(1, &OSDtexture);
pthread_mutex_lock(&OSDMutex);
glGenTextures(1, &OSDtexture);
glBindTexture(GL_TEXTURE_2D, OSDtexture);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, OSDxsize, OSDysize, 0, GL_RGBA, GL_UNSIGNED_BYTE, posd);
@ -3893,7 +3895,7 @@ static void CuvidDisplayFrame(void)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
glFlush();
pthread_mutex_unlock(&OSDMutex);
OsdShown = 2;
OsdShown = 2;
}
glBindTexture(GL_TEXTURE_2D, 0);
glEnable(GL_BLEND);
@ -3901,12 +3903,12 @@ static void CuvidDisplayFrame(void)
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
GlxCheck();
y = OSDy*VideoWindowHeight/OsdHeight;
x = OSDx*VideoWindowWidth/OsdWidth;
h = OSDysize*VideoWindowHeight/OsdHeight;
w = OSDxsize*VideoWindowWidth/OsdWidth;
glViewport(x,(VideoWindowHeight - h - y) , w, h);
y = OSDy * VideoWindowHeight / OsdHeight;
x = OSDx * VideoWindowWidth / OsdWidth;
h = OSDysize * VideoWindowHeight / OsdHeight;
w = OSDxsize * VideoWindowWidth / OsdWidth;
glViewport(x, (VideoWindowHeight - h - y), w, h);
if (gl_prog_osd == 0)
gl_prog_osd = sc_generate_osd(gl_prog_osd); // generate shader programm
@ -4704,7 +4706,7 @@ void ActivateOsd(GLuint texture, int x, int y, int xsize, int ysize)
OSDy = y;
OSDxsize = xsize;
OSDysize = ysize;
OsdShown = 1;
OsdShown = 1;
}
///
@ -5217,8 +5219,8 @@ static void VideoThreadExit(void)
pthread_mutex_destroy(&OSDMutex);
#ifndef PLACEBO
if (OSDtexture)
glDeleteTextures(1,&OSDtexture);
if (OSDtexture)
glDeleteTextures(1, &OSDtexture);
if (gl_prog_osd) {
glDeleteProgram(gl_prog_osd);
gl_prog_osd = 0;