mirror of
				https://projects.vdr-developer.org/git/vdr-plugin-softhddevice.git
				synced 2023-10-10 17:16:51 +00:00 
			
		
		
		
	Add function SetClosing to the video output module.
This commit is contained in:
		@@ -1,6 +1,7 @@
 | 
			
		||||
User johns
 | 
			
		||||
Date:
 | 
			
		||||
 | 
			
		||||
    Add function SetClosing to the video output module.
 | 
			
		||||
    Generalize GetVaapiContext to GetHwAccelContext.
 | 
			
		||||
    Add compile time configurable trickspeed packets dump.
 | 
			
		||||
    Fix bug #1410: wrong spelled AC-3 and E-AC-3.
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										43
									
								
								video.c
									
									
									
									
									
								
							
							
						
						
									
										43
									
								
								video.c
									
									
									
									
									
								
							@@ -263,6 +263,7 @@ typedef struct _video_module_
 | 
			
		||||
    void *(*const GetHwAccelContext)(VideoHwDecoder *);
 | 
			
		||||
    void (*const SetClock) (VideoHwDecoder *, int64_t);
 | 
			
		||||
     int64_t(*const GetClock) (const VideoHwDecoder *);
 | 
			
		||||
    void (*const SetClosing) (const VideoHwDecoder *);
 | 
			
		||||
    void (*const SetTrickSpeed) (const VideoHwDecoder *, int);
 | 
			
		||||
    uint8_t *(*const GrabOutput)(int *, int *, int *);
 | 
			
		||||
    void (*const SetBackground) (uint32_t);
 | 
			
		||||
@@ -4583,7 +4584,7 @@ static void VaapiRenderFrame(VaapiDecoder * decoder,
 | 
			
		||||
///
 | 
			
		||||
static void *VaapiGetHwAccelContext(VaapiDecoder * decoder)
 | 
			
		||||
{
 | 
			
		||||
    return decoder->Vaapi.VaapiContext;
 | 
			
		||||
    return decoder->VaapiContext;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
///
 | 
			
		||||
@@ -4806,6 +4807,16 @@ static int64_t VaapiGetClock(const VaapiDecoder * decoder)
 | 
			
		||||
	2);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
///
 | 
			
		||||
///	Set VA-API decoder closing stream flag.
 | 
			
		||||
///
 | 
			
		||||
///	@param decoder	VA-API	decoder
 | 
			
		||||
///
 | 
			
		||||
static void VaapiSetClosing(VaapiDecoder * decoder)
 | 
			
		||||
{
 | 
			
		||||
    decoder->Closing = 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
///
 | 
			
		||||
///	Set trick play speed.
 | 
			
		||||
///
 | 
			
		||||
@@ -5378,6 +5389,7 @@ static const VideoModule VaapiModule = {
 | 
			
		||||
	VaapiGetHwAccelContext,
 | 
			
		||||
    .SetClock = (void (*const) (VideoHwDecoder *, int64_t))VaapiSetClock,
 | 
			
		||||
    .GetClock = (int64_t(*const) (const VideoHwDecoder *))VaapiGetClock,
 | 
			
		||||
    .SetClosing = (void (*const) (const VideoHwDecoder *))VaapiSetClosing,
 | 
			
		||||
    .SetTrickSpeed =
 | 
			
		||||
	(void (*const) (const VideoHwDecoder *, int))VaapiSetTrickSpeed,
 | 
			
		||||
    .GrabOutput = NULL,
 | 
			
		||||
@@ -5416,6 +5428,7 @@ static const VideoModule VaapiGlxModule = {
 | 
			
		||||
	VaapiGetHwAccelContext,
 | 
			
		||||
    .SetClock = (void (*const) (VideoHwDecoder *, int64_t))VaapiSetClock,
 | 
			
		||||
    .GetClock = (int64_t(*const) (const VideoHwDecoder *))VaapiGetClock,
 | 
			
		||||
    .SetClosing = (void (*const) (const VideoHwDecoder *))VaapiSetClosing,
 | 
			
		||||
    .SetTrickSpeed =
 | 
			
		||||
	(void (*const) (const VideoHwDecoder *, int))VaapiSetTrickSpeed,
 | 
			
		||||
    .GrabOutput = NULL,
 | 
			
		||||
@@ -8380,11 +8393,21 @@ static int64_t VdpauGetClock(const VdpauDecoder * decoder)
 | 
			
		||||
	2);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
///
 | 
			
		||||
///	Set VDPAU decoder closing stream flag.
 | 
			
		||||
///
 | 
			
		||||
///	@param decoder	VDPAU  decoder
 | 
			
		||||
///
 | 
			
		||||
static void VdpauSetClosing(VdpauDecoder * decoder)
 | 
			
		||||
{
 | 
			
		||||
    decoder->Closing = 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
///
 | 
			
		||||
///	Set trick play speed.
 | 
			
		||||
///
 | 
			
		||||
///	@param decoder		VDPAU decoder
 | 
			
		||||
///	@param speed		trick speed (0 = normal)
 | 
			
		||||
///	@param decoder	VDPAU decoder
 | 
			
		||||
///	@param speed	trick speed (0 = normal)
 | 
			
		||||
///
 | 
			
		||||
static void VdpauSetTrickSpeed(VdpauDecoder * decoder, int speed)
 | 
			
		||||
{
 | 
			
		||||
@@ -9097,6 +9120,7 @@ static const VideoModule VdpauModule = {
 | 
			
		||||
	VdpauGetHwAccelContext,
 | 
			
		||||
    .SetClock = (void (*const) (VideoHwDecoder *, int64_t))VdpauSetClock,
 | 
			
		||||
    .GetClock = (int64_t(*const) (const VideoHwDecoder *))VdpauGetClock,
 | 
			
		||||
    .SetClosing = (void (*const) (const VideoHwDecoder *))VdpauSetClosing,
 | 
			
		||||
    .SetTrickSpeed =
 | 
			
		||||
	(void (*const) (const VideoHwDecoder *, int))VdpauSetTrickSpeed,
 | 
			
		||||
    .GrabOutput = VdpauGrabOutputSurface,
 | 
			
		||||
@@ -9254,6 +9278,7 @@ static const VideoModule NoopModule = {
 | 
			
		||||
	DummyGetHwAccelContext,
 | 
			
		||||
    .SetClock = (void (*const) (VideoHwDecoder *, int64_t))NoopSetClock,
 | 
			
		||||
    .GetClock = (int64_t(*const) (const VideoHwDecoder *))NoopGetClock,
 | 
			
		||||
    .SetClosing = (void (*const) (const VideoHwDecoder *))NoopSetClosing,
 | 
			
		||||
    .SetTrickSpeed =
 | 
			
		||||
	(void (*const) (const VideoHwDecoder *, int))NoopSetTrickSpeed,
 | 
			
		||||
    .GrabOutput = NoopGrabOutputSurface,
 | 
			
		||||
@@ -9961,17 +9986,7 @@ int64_t VideoGetClock(const VideoHwDecoder * hw_decoder)
 | 
			
		||||
void VideoSetClosing(VideoHwDecoder * hw_decoder)
 | 
			
		||||
{
 | 
			
		||||
    Debug(3, "video: set closing\n");
 | 
			
		||||
    // FIXME: test to check if working, than make module function
 | 
			
		||||
#ifdef USE_VDPAU
 | 
			
		||||
    if (VideoUsedModule == &VdpauModule) {
 | 
			
		||||
	hw_decoder->Vdpau.Closing = 1;
 | 
			
		||||
    }
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef USE_VAAPI
 | 
			
		||||
    if (VideoUsedModule == &VaapiModule) {
 | 
			
		||||
	hw_decoder->Vaapi.Closing = 1;
 | 
			
		||||
    }
 | 
			
		||||
#endif
 | 
			
		||||
    VideoUsedModule->SetClosing(hw_decoder);
 | 
			
		||||
    // clear clock to avoid further sync
 | 
			
		||||
    VideoSetClock(hw_decoder, AV_NOPTS_VALUE);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user