From 11f8d264bbc0dd7f4956d16c827b94ffc05191a8 Mon Sep 17 00:00:00 2001 From: Brendan Allan Date: Wed, 11 Sep 2024 04:36:47 +0800 Subject: [PATCH 1/7] treat AVFrameSideDataType as non-exhaustive --- src/util/frame/side_data.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/util/frame/side_data.rs b/src/util/frame/side_data.rs index cde86242..bbaae06b 100644 --- a/src/util/frame/side_data.rs +++ b/src/util/frame/side_data.rs @@ -132,6 +132,7 @@ impl From for Type { #[cfg(feature = "ffmpeg_6_1")] AV_FRAME_DATA_VIDEO_HINT => Type::VIDEO_HINT, + _ => unreachable!(), } } } From 72f27aeeeea653c0c8a157d83711a47558331196 Mon Sep 17 00:00:00 2001 From: Richie McIlroy <33632126+richiemcilroy@users.noreply.github.com> Date: Mon, 14 Oct 2024 16:20:36 +0100 Subject: [PATCH 2/7] Update T35 issues --- src/util/frame/side_data.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/util/frame/side_data.rs b/src/util/frame/side_data.rs index 501319a8..20a35a32 100644 --- a/src/util/frame/side_data.rs +++ b/src/util/frame/side_data.rs @@ -69,6 +69,9 @@ pub enum Type { LCEVC, #[cfg(feature = "ffmpeg_7_1")] VIEW_ID, + + #[cfg(feature = "ffmpeg_7_1")] + DOVI_RPU_BUFFER_T35, } impl Type { @@ -142,6 +145,9 @@ impl From for Type { AV_FRAME_DATA_LCEVC => Type::LCEVC, #[cfg(feature = "ffmpeg_7_1")] AV_FRAME_DATA_VIEW_ID => Type::VIEW_ID, + + #[cfg(feature = "ffmpeg_7_1")] + AV_FRAME_DATA_DOVI_RPU_BUFFER_T35 => Type::DOVI_RPU_BUFFER_T35, } } } @@ -208,6 +214,9 @@ impl From for AVFrameSideDataType { Type::LCEVC => AV_FRAME_DATA_LCEVC, #[cfg(feature = "ffmpeg_7_1")] Type::VIEW_ID => AV_FRAME_DATA_VIEW_ID, + + #[cfg(feature = "ffmpeg_7_1")] + Type::DOVI_RPU_BUFFER_T35 => AV_FRAME_DATA_DOVI_RPU_BUFFER_T35, } } } From a8c9cd06ca492fc02f6230efb81f94334878980e Mon Sep 17 00:00:00 2001 From: Richie McIlroy <33632126+richiemcilroy@users.noreply.github.com> Date: Mon, 14 Oct 2024 16:33:48 +0100 Subject: [PATCH 3/7] More T35 issues --- src/util/frame/side_data.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/util/frame/side_data.rs b/src/util/frame/side_data.rs index 20a35a32..28b7e65e 100644 --- a/src/util/frame/side_data.rs +++ b/src/util/frame/side_data.rs @@ -216,7 +216,7 @@ impl From for AVFrameSideDataType { Type::VIEW_ID => AV_FRAME_DATA_VIEW_ID, #[cfg(feature = "ffmpeg_7_1")] - Type::DOVI_RPU_BUFFER_T35 => AV_FRAME_DATA_DOVI_RPU_BUFFER_T35, + Type::DOVI_RPU_BUFFER_T35 => AV_FRAME_DATA_DOVI_RPU_BUFFER, } } } From e1308f3023508afc7ac6aa589da17aaf70b57d08 Mon Sep 17 00:00:00 2001 From: Richie McIlroy <33632126+richiemcilroy@users.noreply.github.com> Date: Mon, 14 Oct 2024 20:55:57 +0100 Subject: [PATCH 4/7] unimplemented --- src/util/frame/side_data.rs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/util/frame/side_data.rs b/src/util/frame/side_data.rs index 28b7e65e..77c52b60 100644 --- a/src/util/frame/side_data.rs +++ b/src/util/frame/side_data.rs @@ -69,7 +69,6 @@ pub enum Type { LCEVC, #[cfg(feature = "ffmpeg_7_1")] VIEW_ID, - #[cfg(feature = "ffmpeg_7_1")] DOVI_RPU_BUFFER_T35, } @@ -145,9 +144,9 @@ impl From for Type { AV_FRAME_DATA_LCEVC => Type::LCEVC, #[cfg(feature = "ffmpeg_7_1")] AV_FRAME_DATA_VIEW_ID => Type::VIEW_ID, - #[cfg(feature = "ffmpeg_7_1")] AV_FRAME_DATA_DOVI_RPU_BUFFER_T35 => Type::DOVI_RPU_BUFFER_T35, + _ => unimplemented!(), } } } @@ -214,9 +213,8 @@ impl From for AVFrameSideDataType { Type::LCEVC => AV_FRAME_DATA_LCEVC, #[cfg(feature = "ffmpeg_7_1")] Type::VIEW_ID => AV_FRAME_DATA_VIEW_ID, - #[cfg(feature = "ffmpeg_7_1")] - Type::DOVI_RPU_BUFFER_T35 => AV_FRAME_DATA_DOVI_RPU_BUFFER, + Type::DOVI_RPU_BUFFER_T35 => AV_FRAME_DATA_DOVI_RPU_BUFFER_T35, } } } From 91b29d09a8c7cb4f5659c38f1f0924b980a30cba Mon Sep 17 00:00:00 2001 From: Richie McIlroy <33632126+richiemcilroy@users.noreply.github.com> Date: Tue, 15 Oct 2024 14:11:35 +0100 Subject: [PATCH 5/7] AV_FRAME_DATA_DOVI_RPU_BUFFER --- src/util/frame/side_data.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/util/frame/side_data.rs b/src/util/frame/side_data.rs index 77c52b60..9fd2a32a 100644 --- a/src/util/frame/side_data.rs +++ b/src/util/frame/side_data.rs @@ -214,7 +214,7 @@ impl From for AVFrameSideDataType { #[cfg(feature = "ffmpeg_7_1")] Type::VIEW_ID => AV_FRAME_DATA_VIEW_ID, #[cfg(feature = "ffmpeg_7_1")] - Type::DOVI_RPU_BUFFER_T35 => AV_FRAME_DATA_DOVI_RPU_BUFFER_T35, + Type::DOVI_RPU_BUFFER_T35 => AV_FRAME_DATA_DOVI_RPU_BUFFER, } } } From 573d39d1a764160066fa63f50033f5f81bebebd3 Mon Sep 17 00:00:00 2001 From: Brendan Allan Date: Thu, 30 Jan 2025 16:49:26 +0800 Subject: [PATCH 6/7] determine delay based on samples, not seconds --- src/software/resampling/context.rs | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/software/resampling/context.rs b/src/software/resampling/context.rs index 330733b0..1d30cf45 100644 --- a/src/software/resampling/context.rs +++ b/src/software/resampling/context.rs @@ -149,12 +149,7 @@ impl Context { /// Get the remaining delay. pub fn delay(&self) -> Option { - unsafe { - match swr_get_delay(self.as_ptr() as *mut _, 1) { - 0 => None, - _ => Some(Delay::from(self)), - } - } + unsafe { Some(Delay::from(self)).filter(|d| d.output > 0) } } /// Run the resampler from the given input to the given output. From 585ebc9061d14459935dac01bb0b222307d7ffd7 Mon Sep 17 00:00:00 2001 From: Brendan Allan Date: Wed, 23 Apr 2025 16:55:54 -0700 Subject: [PATCH 7/7] always use linesize[0] for audio --- src/util/frame/audio.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/util/frame/audio.rs b/src/util/frame/audio.rs index c9a61720..52078d8b 100644 --- a/src/util/frame/audio.rs +++ b/src/util/frame/audio.rs @@ -200,7 +200,7 @@ impl Audio { unsafe { slice::from_raw_parts( (*self.as_ptr()).data[index], - (*self.as_ptr()).linesize[index] as usize, + (*self.as_ptr()).linesize[0] as usize, ) } } @@ -214,7 +214,7 @@ impl Audio { unsafe { slice::from_raw_parts_mut( (*self.as_mut_ptr()).data[index], - (*self.as_ptr()).linesize[index] as usize, + (*self.as_ptr()).linesize[0] as usize, ) } }