mirror of
https://projects.vdr-developer.org/git/vdr-plugin-softhddevice.git
synced 2023-10-10 19:16:51 +02:00
Adds H264 only hardware decoder for still-pictures.
This commit is contained in:
parent
f09a37a941
commit
1f0d5878b1
2
Todo
2
Todo
@ -39,6 +39,7 @@ video:
|
|||||||
some low-bandwidth tv channels have hiccups.
|
some low-bandwidth tv channels have hiccups.
|
||||||
check start with 24Hz display rate
|
check start with 24Hz display rate
|
||||||
crash with ffmpeg without vaapi and vdpau.
|
crash with ffmpeg without vaapi and vdpau.
|
||||||
|
still-picture of PES recordings should use VideoMpegEnqueue.
|
||||||
|
|
||||||
vdpau:
|
vdpau:
|
||||||
software deinterlace path not working.
|
software deinterlace path not working.
|
||||||
@ -55,6 +56,7 @@ libva:
|
|||||||
[drm:i915_wait_request] *ERROR* i915_wait_request returns -11 ...
|
[drm:i915_wait_request] *ERROR* i915_wait_request returns -11 ...
|
||||||
missing OSD support for 3d SBS / Top-Bottom streams, like VPDAU.
|
missing OSD support for 3d SBS / Top-Bottom streams, like VPDAU.
|
||||||
PIP support / multistream handling
|
PIP support / multistream handling
|
||||||
|
VA-AP VaapiCleanup crash after channel without video.
|
||||||
|
|
||||||
libva: branch vaapi-ext / staging
|
libva: branch vaapi-ext / staging
|
||||||
add support for vaapi-ext / staging
|
add support for vaapi-ext / staging
|
||||||
|
16
softhddev.c
16
softhddev.c
@ -1912,6 +1912,11 @@ int VideoDecodeInput(VideoStream * stream)
|
|||||||
#ifdef USE_PIP
|
#ifdef USE_PIP
|
||||||
//fprintf(stderr, "[");
|
//fprintf(stderr, "[");
|
||||||
//DumpMpeg(avpkt->data, avpkt->size);
|
//DumpMpeg(avpkt->data, avpkt->size);
|
||||||
|
#ifdef STILL_DEBUG
|
||||||
|
if (InStillPicture) {
|
||||||
|
DumpMpeg(avpkt->data, avpkt->size);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
// lock decoder against close
|
// lock decoder against close
|
||||||
pthread_mutex_lock(&stream->DecoderLockMutex);
|
pthread_mutex_lock(&stream->DecoderLockMutex);
|
||||||
if (stream->Decoder) {
|
if (stream->Decoder) {
|
||||||
@ -2586,8 +2591,10 @@ void StillPicture(const uint8_t * data, int size)
|
|||||||
VideoResetPacket(MyVideoStream);
|
VideoResetPacket(MyVideoStream);
|
||||||
old_video_hardware_decoder = VideoHardwareDecoder;
|
old_video_hardware_decoder = VideoHardwareDecoder;
|
||||||
// enable/disable hardware decoder for still picture
|
// enable/disable hardware decoder for still picture
|
||||||
|
if (VideoHardwareDecoder != ConfigStillDecoder) {
|
||||||
VideoHardwareDecoder = ConfigStillDecoder;
|
VideoHardwareDecoder = ConfigStillDecoder;
|
||||||
VideoNextPacket(MyVideoStream, CODEC_ID_NONE); // close last stream
|
VideoNextPacket(MyVideoStream, CODEC_ID_NONE); // close last stream
|
||||||
|
}
|
||||||
|
|
||||||
if (MyVideoStream->CodecID == CODEC_ID_NONE) {
|
if (MyVideoStream->CodecID == CODEC_ID_NONE) {
|
||||||
// FIXME: should detect codec, see PlayVideo
|
// FIXME: should detect codec, see PlayVideo
|
||||||
@ -2663,9 +2670,11 @@ void StillPicture(const uint8_t * data, int size)
|
|||||||
#ifdef STILL_DEBUG
|
#ifdef STILL_DEBUG
|
||||||
InStillPicture = 0;
|
InStillPicture = 0;
|
||||||
#endif
|
#endif
|
||||||
VideoNextPacket(MyVideoStream, CODEC_ID_NONE); // close last stream
|
if (VideoHardwareDecoder != old_video_hardware_decoder) {
|
||||||
VideoSetTrickSpeed(MyVideoStream->HwDecoder, 0);
|
|
||||||
VideoHardwareDecoder = old_video_hardware_decoder;
|
VideoHardwareDecoder = old_video_hardware_decoder;
|
||||||
|
VideoNextPacket(MyVideoStream, CODEC_ID_NONE); // close last stream
|
||||||
|
}
|
||||||
|
VideoSetTrickSpeed(MyVideoStream->HwDecoder, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -2804,6 +2813,7 @@ const char *CommandLineHelp(void)
|
|||||||
"\tno-hw-decoder\t\tdisable hw decoder, use software decoder only\n"
|
"\tno-hw-decoder\t\tdisable hw decoder, use software decoder only\n"
|
||||||
"\tno-mpeg-hw-decoder\tdisable hw decoder for mpeg only\n"
|
"\tno-mpeg-hw-decoder\tdisable hw decoder for mpeg only\n"
|
||||||
"\tstill-hw-decoder\tenable hardware decoder for still-pictures\n"
|
"\tstill-hw-decoder\tenable hardware decoder for still-pictures\n"
|
||||||
|
"\tstill-h264-hw-decoder\tenable h264 hw decoder for still-pictures\n"
|
||||||
"\talsa-driver-broken\tdisable broken alsa driver message\n"
|
"\talsa-driver-broken\tdisable broken alsa driver message\n"
|
||||||
"\tignore-repeat-pict\tdisable repeat pict message\n"
|
"\tignore-repeat-pict\tdisable repeat pict message\n"
|
||||||
" -D\t\tstart in detached mode\n";
|
" -D\t\tstart in detached mode\n";
|
||||||
@ -2877,6 +2887,8 @@ int ProcessArgs(int argc, char *const argv[])
|
|||||||
}
|
}
|
||||||
} else if (!strcasecmp("still-hw-decoder", optarg)) {
|
} else if (!strcasecmp("still-hw-decoder", optarg)) {
|
||||||
ConfigStillDecoder = -1;
|
ConfigStillDecoder = -1;
|
||||||
|
} else if (!strcasecmp("still-h264-hw-decoder", optarg)) {
|
||||||
|
ConfigStillDecoder = 1;
|
||||||
} else if (!strcasecmp("alsa-driver-broken", optarg)) {
|
} else if (!strcasecmp("alsa-driver-broken", optarg)) {
|
||||||
AudioAlsaDriverBroken = 1;
|
AudioAlsaDriverBroken = 1;
|
||||||
} else if (!strcasecmp("ignore-repeat-pict", optarg)) {
|
} else if (!strcasecmp("ignore-repeat-pict", optarg)) {
|
||||||
|
Loading…
Reference in New Issue
Block a user