Re: [FFmpeg-devel] [PATCH] avformat/mxfdec: signal channel layouts using the new channel layout api

2024-03-16 Thread Marton Balint



On Thu, 14 Mar 2024, Tomas Härdin wrote:


fre 2024-03-08 klockan 21:13 +0100 skrev Marton Balint:

Signed-off-by: Marton Balint 
---
 libavformat/mxfdec.c | 129 ++---
--
 1 file changed, 53 insertions(+), 76 deletions(-)


No idea how the new API works, but it's less code which seems nice.

Changing AV_CH_* to AV_CHAN_* seems like needless busywork. But that
has little to do with this patch.

No objections from my end.


Ok, will apply.

Thanks,
Marton
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


Re: [FFmpeg-devel] [PATCH] avformat/mxfdec: signal channel layouts using the new channel layout api

2024-03-14 Thread Tomas Härdin
fre 2024-03-08 klockan 21:13 +0100 skrev Marton Balint:
> Signed-off-by: Marton Balint 
> ---
>  libavformat/mxfdec.c | 129 ++---
> --
>  1 file changed, 53 insertions(+), 76 deletions(-)

No idea how the new API works, but it's less code which seems nice.

Changing AV_CH_* to AV_CHAN_* seems like needless busywork. But that
has little to do with this patch.

No objections from my end.

/Tomas
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


Re: [FFmpeg-devel] [PATCH] avformat/mxfdec: signal channel layouts using the new channel layout api

2024-03-08 Thread Anton Khirnov
Quoting Marton Balint (2024-03-08 21:13:59)
> +ret = av_channel_layout_retype(ch_layout, AV_CHANNEL_ORDER_NATIVE, 
> AV_CHANNEL_LAYOUT_RETYPE_FLAG_LOSSLESS);
> +if (ret == AVERROR(ENOSYS))
> +ret = av_channel_layout_retype(ch_layout, AV_CHANNEL_ORDER_UNSPEC, 
> AV_CHANNEL_LAYOUT_RETYPE_FLAG_LOSSLESS);

It might be useful to have an av_channel_layout_retype() flag (something
like AV_CHANNEL_LAYOUT_RETYPE_FLAG_CANONICALISE) that converts to the
simplest possible representation (not saying you need to add it right
now, it's just a note for future consideration).

-- 
Anton Khirnov
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


Re: [FFmpeg-devel] [PATCH] avformat/mxfdec: signal channel layouts using the new channel layout api

2024-03-08 Thread Marton Balint




On Fri, 8 Mar 2024, James Almer wrote:


On 3/8/2024 5:13 PM, Marton Balint wrote:

 Signed-off-by: Marton Balint 
 ---
   libavformat/mxfdec.c | 129 ++-
   1 file changed, 53 insertions(+), 76 deletions(-)

 diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c
 index 289db9833c..e2f4a22983 100644
 --- a/libavformat/mxfdec.c
 +++ b/libavformat/mxfdec.c


[...]


 +ret = av_channel_layout_retype(ch_layout, AV_CHANNEL_ORDER_NATIVE,
 AV_CHANNEL_LAYOUT_RETYPE_FLAG_LOSSLESS);
 +if (ret == AVERROR(ENOSYS))
 +ret = av_channel_layout_retype(ch_layout,
 AV_CHANNEL_ORDER_UNSPEC, AV_CHANNEL_LAYOUT_RETYPE_FLAG_LOSSLESS);
 +if (ret < 0 && ret != AVERROR(ENOSYS))
 +return ret;

   return 0;
   }


I'm not against this patch, but shouldn't we make sure for example that swr 
supports custom layouts first?


I don't really know what is the best approach here. Sure, some stuff will 
break if it encounters a custom layout. But nobody will fix it, if no 
custom layouts are ever encountered...


Regards,
Marton
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


Re: [FFmpeg-devel] [PATCH] avformat/mxfdec: signal channel layouts using the new channel layout api

2024-03-08 Thread James Almer

On 3/8/2024 5:13 PM, Marton Balint wrote:

Signed-off-by: Marton Balint 
---
  libavformat/mxfdec.c | 129 ++-
  1 file changed, 53 insertions(+), 76 deletions(-)

diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c
index 289db9833c..e2f4a22983 100644
--- a/libavformat/mxfdec.c
+++ b/libavformat/mxfdec.c
@@ -188,8 +188,6 @@ typedef struct {
  int body_sid;
  MXFWrappingScheme wrapping;
  int edit_units_per_packet; /* how many edit units to read at a time (PCM, 
ClipWrapped) */
-int require_reordering;
-int channel_ordering[FF_SANE_NB_CHANNELS];
  } MXFTrack;
  
  typedef struct MXFDescriptor {

@@ -1652,48 +1650,48 @@ static const MXFCodecUL 
mxf_data_essence_container_uls[] = {
  
  typedef struct MXFChannelOrderingUL {

  UID uid;
-uint64_t layout_mask;
+enum AVChannel channel;
  enum AVAudioServiceType service_type;
  } MXFChannelOrderingUL;
  
  static const MXFChannelOrderingUL mxf_channel_ordering[] = {

-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x01,0x00,0x00,0x00,0x00 
}, AV_CH_FRONT_LEFT,AV_AUDIO_SERVICE_TYPE_MAIN }, // Left
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x02,0x00,0x00,0x00,0x00 
}, AV_CH_FRONT_RIGHT,   AV_AUDIO_SERVICE_TYPE_MAIN }, // Right
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x03,0x00,0x00,0x00,0x00 
}, AV_CH_FRONT_CENTER,  AV_AUDIO_SERVICE_TYPE_MAIN }, // Center
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x04,0x00,0x00,0x00,0x00 
}, AV_CH_LOW_FREQUENCY, AV_AUDIO_SERVICE_TYPE_MAIN }, // Low Frequency 
Effects
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x05,0x00,0x00,0x00,0x00 
}, AV_CH_SIDE_LEFT, AV_AUDIO_SERVICE_TYPE_MAIN }, // Left Surround
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x06,0x00,0x00,0x00,0x00 
}, AV_CH_SIDE_RIGHT,AV_AUDIO_SERVICE_TYPE_MAIN }, // Right Surround
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x07,0x00,0x00,0x00,0x00 
}, AV_CH_SIDE_LEFT, AV_AUDIO_SERVICE_TYPE_MAIN }, // Left Side 
Surround
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x08,0x00,0x00,0x00,0x00 
}, AV_CH_SIDE_RIGHT,AV_AUDIO_SERVICE_TYPE_MAIN }, // Right Side 
Surround
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x09,0x00,0x00,0x00,0x00 
}, AV_CH_BACK_LEFT, AV_AUDIO_SERVICE_TYPE_MAIN }, // Left Rear 
Surround
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x0a,0x00,0x00,0x00,0x00 
}, AV_CH_BACK_RIGHT,AV_AUDIO_SERVICE_TYPE_MAIN }, // Right Rear 
Surround
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x0b,0x00,0x00,0x00,0x00 
}, AV_CH_FRONT_LEFT_OF_CENTER,  AV_AUDIO_SERVICE_TYPE_MAIN }, // Left Center
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x0c,0x00,0x00,0x00,0x00 
}, AV_CH_FRONT_RIGHT_OF_CENTER, AV_AUDIO_SERVICE_TYPE_MAIN }, // Right Center
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x0d,0x00,0x00,0x00,0x00 
}, AV_CH_BACK_CENTER,   AV_AUDIO_SERVICE_TYPE_MAIN }, // Center Surround
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x0e,0x00,0x00,0x00,0x00 
}, AV_CH_FRONT_CENTER,  AV_AUDIO_SERVICE_TYPE_VISUALLY_IMPAIRED }, // 
Hearing impaired audio channel
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x0f,0x00,0x00,0x00,0x00 
}, AV_CH_FRONT_CENTER,  AV_AUDIO_SERVICE_TYPE_HEARING_IMPAIRED }, // 
Visually impaired narrative audio channel
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x20,0x03,0x00,0x00,0x00 
}, AV_CH_STEREO_LEFT,   AV_AUDIO_SERVICE_TYPE_MAIN }, // Left Total
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x20,0x04,0x00,0x00,0x00 
}, AV_CH_STEREO_RIGHT,  AV_AUDIO_SERVICE_TYPE_MAIN }, // Right Total
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x30,0x01,0x01,0x00,0x00 
}, AV_CH_TOP_FRONT_LEFT,AV_AUDIO_SERVICE_TYPE_MAIN }, // Left Height
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x30,0x01,0x02,0x00,0x00 
}, AV_CH_TOP_FRONT_RIGHT,   AV_AUDIO_SERVICE_TYPE_MAIN }, // Right Height
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x30,0x01,0x03,0x00,0x00 
}, AV_CH_TOP_FRONT_CENTER,  AV_AUDIO_SERVICE_TYPE_MAIN }, // Center Height
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x30,0x01,0x04,0x00,0x00 
}, AV_CH_TOP_SIDE_LEFT, AV_AUDIO_SERVICE_TYPE_MAIN }, // Left Surround 
Height
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x30,0x01,0x05,0x00,0x00 
}, AV_CH_TOP_SIDE_RIGHT,AV_AUDIO_SERVICE_TYPE_MAIN }, // Right Surround 
Height
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x30,0x01,0x06,0x00,0x00 
}, AV_CH_TOP_SIDE_LEFT, AV_AUDIO_SERVICE_TYPE_MAIN }, // Left 

[FFmpeg-devel] [PATCH] avformat/mxfdec: signal channel layouts using the new channel layout api

2024-03-08 Thread Marton Balint
Signed-off-by: Marton Balint 
---
 libavformat/mxfdec.c | 129 ++-
 1 file changed, 53 insertions(+), 76 deletions(-)

diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c
index 289db9833c..e2f4a22983 100644
--- a/libavformat/mxfdec.c
+++ b/libavformat/mxfdec.c
@@ -188,8 +188,6 @@ typedef struct {
 int body_sid;
 MXFWrappingScheme wrapping;
 int edit_units_per_packet; /* how many edit units to read at a time (PCM, 
ClipWrapped) */
-int require_reordering;
-int channel_ordering[FF_SANE_NB_CHANNELS];
 } MXFTrack;
 
 typedef struct MXFDescriptor {
@@ -1652,48 +1650,48 @@ static const MXFCodecUL 
mxf_data_essence_container_uls[] = {
 
 typedef struct MXFChannelOrderingUL {
 UID uid;
-uint64_t layout_mask;
+enum AVChannel channel;
 enum AVAudioServiceType service_type;
 } MXFChannelOrderingUL;
 
 static const MXFChannelOrderingUL mxf_channel_ordering[] = {
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x01,0x00,0x00,0x00,0x00 
}, AV_CH_FRONT_LEFT,AV_AUDIO_SERVICE_TYPE_MAIN }, // Left
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x02,0x00,0x00,0x00,0x00 
}, AV_CH_FRONT_RIGHT,   AV_AUDIO_SERVICE_TYPE_MAIN }, // Right
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x03,0x00,0x00,0x00,0x00 
}, AV_CH_FRONT_CENTER,  AV_AUDIO_SERVICE_TYPE_MAIN }, // Center
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x04,0x00,0x00,0x00,0x00 
}, AV_CH_LOW_FREQUENCY, AV_AUDIO_SERVICE_TYPE_MAIN }, // Low Frequency 
Effects
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x05,0x00,0x00,0x00,0x00 
}, AV_CH_SIDE_LEFT, AV_AUDIO_SERVICE_TYPE_MAIN }, // Left Surround
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x06,0x00,0x00,0x00,0x00 
}, AV_CH_SIDE_RIGHT,AV_AUDIO_SERVICE_TYPE_MAIN }, // Right Surround
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x07,0x00,0x00,0x00,0x00 
}, AV_CH_SIDE_LEFT, AV_AUDIO_SERVICE_TYPE_MAIN }, // Left Side 
Surround
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x08,0x00,0x00,0x00,0x00 
}, AV_CH_SIDE_RIGHT,AV_AUDIO_SERVICE_TYPE_MAIN }, // Right Side 
Surround
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x09,0x00,0x00,0x00,0x00 
}, AV_CH_BACK_LEFT, AV_AUDIO_SERVICE_TYPE_MAIN }, // Left Rear 
Surround
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x0a,0x00,0x00,0x00,0x00 
}, AV_CH_BACK_RIGHT,AV_AUDIO_SERVICE_TYPE_MAIN }, // Right Rear 
Surround
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x0b,0x00,0x00,0x00,0x00 
}, AV_CH_FRONT_LEFT_OF_CENTER,  AV_AUDIO_SERVICE_TYPE_MAIN }, // Left Center
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x0c,0x00,0x00,0x00,0x00 
}, AV_CH_FRONT_RIGHT_OF_CENTER, AV_AUDIO_SERVICE_TYPE_MAIN }, // Right Center
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x0d,0x00,0x00,0x00,0x00 
}, AV_CH_BACK_CENTER,   AV_AUDIO_SERVICE_TYPE_MAIN }, // Center Surround
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x0e,0x00,0x00,0x00,0x00 
}, AV_CH_FRONT_CENTER,  AV_AUDIO_SERVICE_TYPE_VISUALLY_IMPAIRED }, // 
Hearing impaired audio channel
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x0f,0x00,0x00,0x00,0x00 
}, AV_CH_FRONT_CENTER,  AV_AUDIO_SERVICE_TYPE_HEARING_IMPAIRED }, // 
Visually impaired narrative audio channel
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x20,0x03,0x00,0x00,0x00 
}, AV_CH_STEREO_LEFT,   AV_AUDIO_SERVICE_TYPE_MAIN }, // Left Total
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x20,0x04,0x00,0x00,0x00 
}, AV_CH_STEREO_RIGHT,  AV_AUDIO_SERVICE_TYPE_MAIN }, // Right Total
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x30,0x01,0x01,0x00,0x00 
}, AV_CH_TOP_FRONT_LEFT,AV_AUDIO_SERVICE_TYPE_MAIN }, // Left Height
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x30,0x01,0x02,0x00,0x00 
}, AV_CH_TOP_FRONT_RIGHT,   AV_AUDIO_SERVICE_TYPE_MAIN }, // Right Height
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x30,0x01,0x03,0x00,0x00 
}, AV_CH_TOP_FRONT_CENTER,  AV_AUDIO_SERVICE_TYPE_MAIN }, // Center Height
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x30,0x01,0x04,0x00,0x00 
}, AV_CH_TOP_SIDE_LEFT, AV_AUDIO_SERVICE_TYPE_MAIN }, // Left Surround 
Height
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x30,0x01,0x05,0x00,0x00 
}, AV_CH_TOP_SIDE_RIGHT,AV_AUDIO_SERVICE_TYPE_MAIN }, // Right Surround 
Height
-{ { 
0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x03,0x02,0x01,0x30,0x01,0x06,0x00,0x00 
}, AV_CH_TOP_SIDE_LEFT, AV_AUDIO_SERVICE_TYPE_MAIN }, // Left Side 
Surround Height
-{ {