[FFmpeg-devel] [PATCH] libavfilter/dnn/openvino: Reduce redundant memory allocation

2023-11-09 Thread wenbin . chen-at-intel . com
From: Wenbin Chen 

We can directly get data ptr from tensor, so that extral memory
allocation can be removed.

Signed-off-by: Wenbin Chen 
---
 libavfilter/dnn/dnn_backend_openvino.c | 42 +-
 1 file changed, 21 insertions(+), 21 deletions(-)

diff --git a/libavfilter/dnn/dnn_backend_openvino.c 
b/libavfilter/dnn/dnn_backend_openvino.c
index 10520cd765..d3af8c34ce 100644
--- a/libavfilter/dnn/dnn_backend_openvino.c
+++ b/libavfilter/dnn/dnn_backend_openvino.c
@@ -204,7 +204,6 @@ static int fill_model_input_ov(OVModel *ov_model, 
OVRequestItem *request)
 ov_tensor_t* tensor = NULL;
 ov_shape_t input_shape = {0};
 ov_element_type_e precision;
-void *input_data_ptr = NULL;
 #else
 dimensions_t dims;
 precision_e precision;
@@ -249,12 +248,6 @@ static int fill_model_input_ov(OVModel *ov_model, 
OVRequestItem *request)
 input.width = dims[2];
 input.channels = dims[3];
 input.dt = precision_to_datatype(precision);
-input.data = av_malloc(input.height * input.width * input.channels * 
get_datatype_size(input.dt));
-if (!input.data) {
-ov_shape_free(&input_shape);
-return AVERROR(ENOMEM);
-}
-input_data_ptr = input.data;
 #else
 status = ie_infer_request_get_blob(request->infer_request, 
task->input_name, &input_blob);
 if (status != OK) {
@@ -297,6 +290,26 @@ static int fill_model_input_ov(OVModel *ov_model, 
OVRequestItem *request)
 request->lltasks[i] = lltask;
 request->lltask_count = i + 1;
 task = lltask->task;
+#if HAVE_OPENVINO2
+if (tensor)
+ov_tensor_free(tensor);
+status = ov_tensor_create(precision, input_shape, &tensor);
+ov_shape_free(&input_shape);
+if (status != OK) {
+av_log(ctx, AV_LOG_ERROR, "Failed to create tensor from host 
prt.\n");
+return ov2_map_error(status, NULL);
+}
+status = ov_tensor_data(tensor, &input.data);
+if (status != OK) {
+av_log(ctx, AV_LOG_ERROR, "Failed to get input data.\n");
+return ov2_map_error(status, NULL);
+}
+status = ov_infer_request_set_input_tensor(request->infer_request, 
tensor);
+if (status != OK) {
+av_log(ctx, AV_LOG_ERROR, "Failed to Set an input tensor for the 
model.\n");
+return ov2_map_error(status, NULL);
+}
+#endif
 switch (ov_model->model->func_type) {
 case DFT_PROCESS_FRAME:
 if (task->do_ioproc) {
@@ -317,24 +330,11 @@ static int fill_model_input_ov(OVModel *ov_model, 
OVRequestItem *request)
 av_assert0(!"should not reach here");
 break;
 }
-#if HAVE_OPENVINO2
-status = ov_tensor_create_from_host_ptr(precision, input_shape, 
input.data, &tensor);
-ov_shape_free(&input_shape);
-if (status != OK) {
-av_log(ctx, AV_LOG_ERROR, "Failed to create tensor from host 
prt.\n");
-return ov2_map_error(status, NULL);
-}
-status = ov_infer_request_set_input_tensor(request->infer_request, 
tensor);
-if (status != OK) {
-av_log(ctx, AV_LOG_ERROR, "Failed to Set an input tensor for the 
model.\n");
-return ov2_map_error(status, NULL);
-}
-#endif
 input.data = (uint8_t *)input.data
  + input.width * input.height * input.channels * 
get_datatype_size(input.dt);
 }
 #if HAVE_OPENVINO2
-av_freep(&input_data_ptr);
+ov_tensor_free(tensor);
 #else
 ie_blob_free(&input_blob);
 #endif
-- 
2.34.1

___
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] [RFC] Release 6.1

2023-11-09 Thread Lynne
Nov 7, 2023, 08:36 by d...@lynne.ee:

> Oct 29, 2023, 06:57 by d...@lynne.ee:
>
>> Oct 29, 2023, 05:51 by mich...@niedermayer.cc:
>>
>>> On Sat, Oct 28, 2023 at 09:23:45PM +0200, Lynne wrote:
>>>
 Oct 28, 2023, 18:49 by mich...@niedermayer.cc:

 > On Thu, Jul 06, 2023 at 06:04:41PM +0200, Lynne wrote:
 >
 >> It's been a while since we've had a release, and we've had
 >> a lot of new features in.
 >> We did say we would make releases more often, and I think
 >> it's about time we have a new release.
 >>
 >> Anything anyone wants to have merged or should we branch
 >> off 6.1 in a few days?
 >>
 >
 > Whats the status of this ?
 > I can branch 6.1 anytime
 >
 > It was just that jb told me
 > "6.1 opportunity is gone.
 >  We're too late on the schedule, and noone had time to work on it, so it 
 > is wiser to target 7.0 in January"
 >
 > but now i see on IRC
 >  make a damn release already
 >  j-b: drop MiNi from release maintership and nominate 
 > Lynne
 >  I pledge to bring back /slap IRC messages to those who fail to 
 > push the patches they want for release!
 >  durandal_1707: good point, we should look at doing another 5.1.x 
 > release and a 6.0.x release.
 >
 > noone mentioned 5.1.x and 6.0.x to me before
 >
 > anyway, ill try to make releases from all maintained branches,
 >
 > and will branch 6.1 as soon as Lynne or others say everything is ready.
 >
 > thx
 >

 It's never too late to make a release. If we do a release now, nothing's 
 stopping
 us from doing a 7.0 and getting back on track with releases every two 
 months or so,
 like the plan was.

 7.0 is likely to be a pretty big release, with YUVJ removal, (xHE) 
 AAC+fixes, D3D12 hwdec,
 Vulkan encode and Vulkan AV1, and VVC, and IAMF, and MLP work, so it's a 
 good idea to
 have a release before all this lands.

 I think the tree is in a pretty good state ATM, you should go ahead and 
 branch if you're
 comfortable with it as well.

>>>
>>> branch made
>>>
>>
>> Thanks. I'll get a blog post ready for the transform work, as kierank wanted 
>> to post something,
>> and if users can know to who to point fingers to in case it degrades 
>> performance on RPI1 devices.
>>
>>
 Let's aim for a release by Sunday next week. That should give everyone 
 enough time to
 backport fixes they want in.

>>>
>>> I would aim for 1-3 weeks (when code and developers are ready)
>>> dont want to aim for a specific day, better pick a day when everything is 
>>> fine
>>> not too many distractions, ...
>>>
>>> Or is there something that favors us to be before a specific date ?
>>>
>>
>> Not really a reason, Sunday is just an optimistic date to aim for.
>> If there are no big fixes to backport to the branch, I think we can target 
>> it.
>>
>
> The nlmeans_vulkan patch I just sent is the last patch I'd like to have in 
> 6.1.
> Does anyone else have any patches they would like in 6.1?
>

Pushed the 2 patches.

Michael, do you think you can tag the release late tonight?
No one has said anything yet.
I'll write release notes for the website by then as well.
___
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 2/4] avcodec/evc_parse: Check num_remaining_tiles_in_slice_minus1

2023-11-09 Thread Dawid Kozinski/Multimedia (PLT) /SRPOL/Staff Engineer/Samsung Electronics
Michael

Could you please apply the following patch

[FFmpeg-devel] [PATCH 2/4] avcodec/evc_parse: Check 
num_remaining_tiles_in_slice_minus1
https://patchwork.ffmpeg.org/project/ffmpeg/patch/20231004225921.30287-2-mich...@niedermayer.cc/
 

Dawid

> -Original Message-
> From: ffmpeg-devel  On Behalf Of
> Michael Niedermayer
> Sent: piątek, 27 października 2023 21:43
> To: FFmpeg development discussions and patches 
> Subject: Re: [FFmpeg-devel] [PATCH 2/4] avcodec/evc_parse: Check
> num_remaining_tiles_in_slice_minus1
> 
> On Fri, Oct 27, 2023 at 10:07:38AM +0200, Dawid Kozinski/Multimedia (PLT)
> /SRPOL/Staff Engineer/Samsung Electronics wrote:
> >
> >
> >
> >
> > > -Original Message-
> > > From: ffmpeg-devel  On Behalf Of
> > > Michael Niedermayer
> > > Sent: czwartek, 5 października 2023 00:59
> > > To: FFmpeg development discussions and patches
> > > 
> > > Subject: [FFmpeg-devel] [PATCH 2/4] avcodec/evc_parse: Check
> > > num_remaining_tiles_in_slice_minus1
> > >
> > > Fixes: out of array access
> > > Fixes: 62467/clusterfuzz-testcase-minimized-
> > > ffmpeg_BSF_EVC_FRAME_MERGE_fuzzer-6092990982258688
> > >
> > > Found-by: continuous fuzzing process
> > > https://protect2.fireeye.com/v1/url?k=10fdc12a-701f5c77-10fc4a65-
> > > 000babd9f1ba-c93ee30773aca891&q=1&e=409cddd0-bda7-445c-b76b-
> > > 1caf069ec3f8&u=https%3A%2F%2Fgithub.com%2Fgoogle%2Foss-
> > > fuzz%2Ftree%2Fmaster%2Fprojects%2Fffmpeg
> > > Signed-off-by: Michael Niedermayer 
> > > ---
> > >  libavcodec/evc_parse.c | 8 ++--
> > >  1 file changed, 6 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/libavcodec/evc_parse.c b/libavcodec/evc_parse.c index
> > > bd3a4416f2d..5ab33166cf3 100644
> > > --- a/libavcodec/evc_parse.c
> > > +++ b/libavcodec/evc_parse.c
> > > @@ -58,8 +58,12 @@ int ff_evc_parse_slice_header(GetBitContext *gb,
> > > EVCParserSliceHeader *sh,
> > >  if (!sh->arbitrary_slice_flag)
> > >  sh->last_tile_id = get_bits(gb, pps->tile_id_len_minus1 + 1);
> > >  else {
> > > -sh->num_remaining_tiles_in_slice_minus1 =
> > get_ue_golomb_long(gb);
> > > -num_tiles_in_slice = sh->num_remaining_tiles_in_slice_minus1
> > + 2;
> > > +unsigned num_remaining_tiles_in_slice_minus1 =
> > > get_ue_golomb_long(gb);
> > > +if (num_remaining_tiles_in_slice_minus1 >
> > > + EVC_MAX_TILE_ROWS *
> > > EVC_MAX_TILE_COLUMNS - 2)
> > > +return AVERROR_INVALIDDATA;
> > > +
> > > +num_tiles_in_slice = num_remaining_tiles_in_slice_minus1 + 2;
> > > +sh->num_remaining_tiles_in_slice_minus1 =
> > > + num_remaining_tiles_in_slice_minus1;
> > >  for (int i = 0; i < num_tiles_in_slice - 1; ++i)
> > >  sh->delta_tile_id_minus1[i] = get_ue_golomb_long(gb);
> > >  }
> > > --
> > > 2.17.1
> > >
> >
> > Reviewed and tested. It can be merged.
> 
> will apply
> 
> thx
> 
> [...]
> --
> Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
> 
> Homeopathy is like voting while filling the ballot out with transparent ink.
> Sometimes the outcome one wanted occurs. Rarely its worse than filling out a
> ballot properly.


___
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] [ANNOUNCE] upcoming vote: extra members for GA

2023-11-09 Thread Anton Khirnov
As nobody expressed a preference, the vote will start next Monday
(2023-11-13). It should run for a week, and will be followed by TC/CC
elections.

The only extra GA candidate I see proposed so far is Ronald. If anyone
wants to suggest further people, please do so in this thread ASAP.

Cheers,
-- 
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] [RFC] Release 6.1

2023-11-09 Thread epirat07



On 9 Nov 2023, at 9:20, Lynne wrote:

> Nov 7, 2023, 08:36 by d...@lynne.ee:
>
>> Oct 29, 2023, 06:57 by d...@lynne.ee:
>>
>>> Oct 29, 2023, 05:51 by mich...@niedermayer.cc:
>>>
 On Sat, Oct 28, 2023 at 09:23:45PM +0200, Lynne wrote:

> Oct 28, 2023, 18:49 by mich...@niedermayer.cc:
>
>> On Thu, Jul 06, 2023 at 06:04:41PM +0200, Lynne wrote:
>>
>>> It's been a while since we've had a release, and we've had
>>> a lot of new features in.
>>> We did say we would make releases more often, and I think
>>> it's about time we have a new release.
>>>
>>> Anything anyone wants to have merged or should we branch
>>> off 6.1 in a few days?
>>>
>>
>> Whats the status of this ?
>> I can branch 6.1 anytime
>>
>> It was just that jb told me
>> "6.1 opportunity is gone.
>>  We're too late on the schedule, and noone had time to work on it, so it 
>> is wiser to target 7.0 in January"
>>
>> but now i see on IRC
>>  make a damn release already
>>  j-b: drop MiNi from release maintership and nominate 
>> Lynne
>>  I pledge to bring back /slap IRC messages to those who fail to 
>> push the patches they want for release!
>>  durandal_1707: good point, we should look at doing another 5.1.x 
>> release and a 6.0.x release.
>>
>> noone mentioned 5.1.x and 6.0.x to me before
>>
>> anyway, ill try to make releases from all maintained branches,
>>
>> and will branch 6.1 as soon as Lynne or others say everything is ready.
>>
>> thx
>>
>
> It's never too late to make a release. If we do a release now, nothing's 
> stopping
> us from doing a 7.0 and getting back on track with releases every two 
> months or so,
> like the plan was.
>
> 7.0 is likely to be a pretty big release, with YUVJ removal, (xHE) 
> AAC+fixes, D3D12 hwdec,
> Vulkan encode and Vulkan AV1, and VVC, and IAMF, and MLP work, so it's a 
> good idea to
> have a release before all this lands.
>
> I think the tree is in a pretty good state ATM, you should go ahead and 
> branch if you're
> comfortable with it as well.
>

 branch made

>>>
>>> Thanks. I'll get a blog post ready for the transform work, as kierank 
>>> wanted to post something,
>>> and if users can know to who to point fingers to in case it degrades 
>>> performance on RPI1 devices.
>>>
>>>
> Let's aim for a release by Sunday next week. That should give everyone 
> enough time to
> backport fixes they want in.
>

 I would aim for 1-3 weeks (when code and developers are ready)
 dont want to aim for a specific day, better pick a day when everything is 
 fine
 not too many distractions, ...

 Or is there something that favors us to be before a specific date ?

>>>
>>> Not really a reason, Sunday is just an optimistic date to aim for.
>>> If there are no big fixes to backport to the branch, I think we can target 
>>> it.
>>>
>>
>> The nlmeans_vulkan patch I just sent is the last patch I'd like to have in 
>> 6.1.
>> Does anyone else have any patches they would like in 6.1?

If 6.1 will be cut from master, my tpad fix I sent yesterday should probably be 
applied first
to prevent having a release with broken tpad.

>>
>
> Pushed the 2 patches.
>
> Michael, do you think you can tag the release late tonight?
> No one has said anything yet.
> I'll write release notes for the website by then as well.
> ___
> 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".
___
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] [RFC] Release 6.1

2023-11-09 Thread Gyan Doshi




On 2023-11-09 03:16 pm, epira...@gmail.com wrote:

If 6.1 will be cut from master, my tpad fix I sent yesterday should probably be 
applied first
to prevent having a release with broken tpad.


The branch is already cut. Will need to be cherry-picked.

Regards,
Gyan
___
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 40/42] avcodec/hevcdec: Switch to ProgressFrames

2023-11-09 Thread Anton Khirnov
Quoting Andreas Rheinhardt (2023-09-19 21:57:32)
> Avoids implicit av_frame_ref() and therefore allocations
> and error checks. It also avoids explicitly allocating
> the AVFrames (done implicitly when getting the buffer).
> 
> Signed-off-by: Andreas Rheinhardt 
> ---
>  libavcodec/hevc_filter.c |  8 
>  libavcodec/hevc_mvs.c|  6 +++---
>  libavcodec/hevc_refs.c   | 22 ++
>  libavcodec/hevcdec.c | 24 ++--
>  libavcodec/hevcdec.h |  4 ++--
>  5 files changed, 29 insertions(+), 35 deletions(-)

Looks ok

-- 
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 41/42] avcodec/pngdec: Switch to ProgressFrames

2023-11-09 Thread Anton Khirnov
Quoting Andreas Rheinhardt (2023-09-19 21:57:33)
> Avoids implicit av_frame_ref() and therefore allocations
> and error checks. It also avoids explicitly allocating
> the AVFrames (done implicitly when getting the buffer).
> 
> Signed-off-by: Andreas Rheinhardt 
> ---
>  libavcodec/pngdec.c | 64 +++--
>  1 file changed, 27 insertions(+), 37 deletions(-)

Looks ok

-- 
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 42/42] avcodec/ffv1dec: Switch to ProgressFrames

2023-11-09 Thread Anton Khirnov
Quoting Andreas Rheinhardt (2023-09-19 21:57:34)
> Avoids implicit av_frame_ref() and therefore allocations
> and error checks. It also avoids explicitly allocating
> the AVFrames (done implicitly when getting the buffer).
> 
> Signed-off-by: Andreas Rheinhardt 
> ---
>  libavcodec/ffv1.c|  1 -
>  libavcodec/ffv1.h|  4 +--
>  libavcodec/ffv1dec.c | 83 +++-
>  3 files changed, 37 insertions(+), 51 deletions(-)

Looks ok

-- 
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 1/2] avfilter/vf_tpad: fix check for drawing initialization

2023-11-09 Thread Anton Khirnov
Quoting Marvin Scholz (2023-11-07 23:21:17)
> The check if drawing needs to be initialized and supported formats
> should be drawable ones was flawed, as pad_stop/pad_start is only
> populated from stop_duration/start_duration after these checks.
> 
> To fix that, check the _duration variants as well and for better
> readability and maintainability break the check out into its own
> helper.
> 
> Fixes a regression from 86b252ea9dee18006910e30646ad1067f2d1323f
> Fix #10621
> ---
>  libavfilter/vf_tpad.c | 13 +
>  1 file changed, 9 insertions(+), 4 deletions(-)

Set pushed

-- 
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] avcodec/mpegvideo: Remove spec-incompliant inverse quantisation

2023-11-09 Thread Anton Khirnov
Quoting Alexander Strasser (2023-11-08 21:55:10)
> On 2023-11-08 12:40 +0100, Anton Khirnov wrote:
> > Quoting Michael Niedermayer (2023-10-31 09:40:44)
> > > On Mon, Oct 30, 2023 at 02:11:27PM +0100, Andreas Rheinhardt wrote:
> > > > Section 7.4.4 of the MPEG-2 specifications requires that the
> > > > last bit of the last coefficient be toggled so that the sum
> > > > of all coefficients is odd; both our decoder and encoder
> > > > did this only if the bitexact flag has been set (although
> > > > stuff like this should be behind AV_CODEC_FLAG2_FAST).
> > > > This patch changes this by removing the spec-incompliant
> > > > functions.
> > >
> > > This commit message should include benchamarks documenting the speed loss
> > > (of the unquantize, the IDCT and overall)
> > > It is expected that the speed of some IDCTs will be impacted negativly
> > > as the non zero terms will prevent the skiping of some significant code
> > >
> > > as well as information about how much PSNR improves (to the encoder input)
> > >
> > > Also the change is a +-1 in one spot before the IDCT, the IDCT is not 
> > > bitexactly
> > > specified in MPEG-2 so one could think of this as a
> > > correct implementation followed by a IDCT that was sometimes +-1 off
> > > instead of spec non compliance
> > >
> > > Only after the benchmarks and PSNR is presented should we decide if this
> > > is a change we want
> >
> > I disagree that the burden of proof should be on Andreas here. It should
> > be up to whoever wants to keep this code to show that it is useful.
> 
> There was an argument presented.

I see no argument for why the code in question is useful, can you point
to the exact text?

> That argument could be challenged or otherwise explained why it more
> important to have this always behave like with bitexact.
> 
> This could lead to "OK, I think removal is better" or if not benchmarks
> could lead to one or the other decision.
> 
> Saying the burden is on whoever wants to keep the code sounds like a way
> for arbitrary code removal. While I agree getting rid of code can be a good
> thing, this would definitely take it too far.

All code is a maintenance burden, therefore all code should have a
reason for its presence in the codebase, otherwise it should be removed.

-- 
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 v28 1/2] avcodec/evc_encoder: Provided support for EVC encoder

2023-11-09 Thread Dawid Kozinski/Multimedia (PLT) /SRPOL/Staff Engineer/Samsung Electronics
Hi, 

Both, the implementation of the EVC encoder and decoder for FFmpeg depend on 
external libraries (at least for now). They are just wrappers using external 
libraries, namely libxeve (encoder implementation) and libxevd (decoder 
implementation).

The EVC defines two profiles: the "Baseline Profile" and the "Main Profile".
For the encoder and decoder, libraries can be built for both main and baseline 
profiles as follows:
cmake .. -DSET_PROF=BASE && make && make install
cmake .. -DSET_PROF=MAIN && make && make install

If you like, you can build RPM or DEB packages for both profiles:
cmake .. -DSET_PROF=BASE && make -j8 && cpack -G RPM
cmake .. -DSET_PROF=MAIN && make -j8 && cpack -G RPM

Links to the external libraries:
https://github.com/mpeg5/xeve
https://github.com/mpeg5/xevd

Could you please clarify what exactly you need?
What changes do you expect on the FFmpeg implementation side?

Best regards
Dawid Koziński


> -Original Message-
> From: ffmpeg-devel  On Behalf Of Neal
> Gompa
> Sent: środa, 18 października 2023 15:16
> To: FFmpeg development discussions and patches 
> Cc: Dawid Kozinski ; d.frankie...@samsung.com
> Subject: Re: [FFmpeg-devel] [PATCH v28 1/2] avcodec/evc_encoder: Provided
> support for EVC encoder
> 
> On Tue, Sep 19, 2023 at 7:34 AM Dawid Kozinski 
> wrote:
> >
> > - Added EVC encoder wrapper
> > - Changes in project configuration file and libavcodec Makefile
> > - Added documentation for xeve wrapper
> >
> 
> Can you make this work with just the baseline library too? For Fedora and 
> EPEL,
> we can only ship the xev{e,d} baseline libraries.
> 
> 
> 
> 
> 
> --
> 真実はいつも一つ!/ Always, there's only one truth!
> ___
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://protect2.fireeye.com/v1/url?k=4d63ea49-2c1e0235-4d626106-
> 74fe485cc33c-e991741fdaee2af8&q=1&e=66f2f6aa-977c-4a9e-be0a-
> 8a9453d9bf19&u=https%3A%2F%2Fffmpeg.org%2Fmailman%2Flistinfo%2Fffmp
> eg-devel
> 
> To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org
> with subject "unsubscribe".


___
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 4/4] lavu/log: do not assume AVClass.item_name is always set

2023-11-09 Thread Anton Khirnov
Quoting James Almer (2023-11-07 21:52:11)
> What can probably be dropped however are the checks in log.c for
> runtime major version 50 and 51.

Right. Patches welcome?

-- 
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 08/24] fftools/ffmpeg_filter: remove an unnecessary sub2video_push_ref() call

2023-11-09 Thread Anton Khirnov
Quoting Nicolas George (2023-11-04 15:19:00)
> Anton Khirnov (12023-11-04):
> > It only seems to produce duplicate frames.
> 
> Yes it does, that is the point of it. Without the duplicated frame, a
> filter with synchronized inputs (like overlay) will accumulate video
> frames while waiting for the next sub2video frame.

The problem with that code (and the reason this patch exists), is that
it depends on the order in which the frames arrive on filtergraph
inputs, which is not meaningful (and becomes non-deterministic with
threading).

-- 
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 08/24] fftools/ffmpeg_filter: remove an unnecessary sub2video_push_ref() call

2023-11-09 Thread Nicolas George
Anton Khirnov (12023-11-09):
> The problem with that code (and the reason this patch exists), is that
> it depends on the order in which the frames arrive on filtergraph
> inputs, which is not meaningful (and becomes non-deterministic with
> threading).

I can understand that. We will have to find a solution, won't we? (I
hope you do not consider removing a feature that people have been using
for years an option.)

I can suggest this: have demuxer code emit virtual subtitles packets to
trigger the sending of the heartbeat frames.

Regards,

-- 
  Nicolas George


signature.asc
Description: PGP signature
___
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 18/24] fftools/ffmpeg: add thread-aware transcode scheduling infrastructure

2023-11-09 Thread Anton Khirnov
Quoting James Almer (2023-11-04 14:53:25)
> On 11/4/2023 4:56 AM, Anton Khirnov wrote:
> > +static void *task_wrapper(void *arg)
> > +{
> > +SchTask  *task = arg;
> > +Scheduler *sch = task->parent;
> > +int ret;
> > +int err = 0;
> > +
> > +ret = (intptr_t)task->func(task->func_arg);
> > +if (ret < 0)
> > +av_log(task->func_arg, AV_LOG_ERROR,
> > +   "Task finished with error code: %d (%s)\n", ret, 
> > av_err2str(ret));
> > +
> > +switch (task->node.type) {
> > +case SCH_NODE_TYPE_DEMUX:   err = demux_done (sch, 
> > task->node.idx); break;
> > +case SCH_NODE_TYPE_MUX: err = mux_done   (sch, 
> > task->node.idx); break;
> > +case SCH_NODE_TYPE_DEC: err = dec_done   (sch, 
> > task->node.idx); break;
> > +case SCH_NODE_TYPE_ENC: err = enc_done   (sch, 
> > task->node.idx); break;
> > +case SCH_NODE_TYPE_FILTER_IN:   err = filter_done(sch, 
> > task->node.idx); break;
> 
> task->node.type seems to be constant, so wouldn't it be faster,

This is only called once per node, so I don't think performance
considerations make sense.

> or at least cleaner looking here, to use a function pointer assigned
> in task_init()?

That just moves the switch to a different place, adds an extra function
pointer, and makes it less clear what is being called, so I don't see
how it's an improvement.

That said, I do have some vague thoughts about abstracting away some
node-type specific things, but I'd rather leave that for later.

-- 
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".


[FFmpeg-devel] [PATCH v2 18/24] fftools/ffmpeg: add thread-aware transcode scheduling infrastructure

2023-11-09 Thread Anton Khirnov
See the comment block at the top of fftools/ffmpeg_sched.h for more
details on what this scheduler is for.

This commit adds the scheduling code itself, along with minimal
integration with the rest of the program:
* allocating and freeing the scheduler
* passing it throughout the call stack in order to register the
  individual components (demuxers/decoders/filtergraphs/encoders/muxers)
  with the scheduler

The scheduler is not actually used as of this commit, so it should not
result in any change in behavior. That will change in future commits.
---
 fftools/Makefile  |1 +
 fftools/ffmpeg.c  |   18 +-
 fftools/ffmpeg.h  |   24 +-
 fftools/ffmpeg_dec.c  |   10 +-
 fftools/ffmpeg_demux.c|   46 +-
 fftools/ffmpeg_enc.c  |   13 +-
 fftools/ffmpeg_filter.c   |   37 +-
 fftools/ffmpeg_mux.c  |   17 +-
 fftools/ffmpeg_mux.h  |   11 +
 fftools/ffmpeg_mux_init.c |   85 +-
 fftools/ffmpeg_opt.c  |   22 +-
 fftools/ffmpeg_sched.c| 2072 +
 fftools/ffmpeg_sched.h|  461 +
 13 files changed, 2761 insertions(+), 56 deletions(-)
 create mode 100644 fftools/ffmpeg_sched.c
 create mode 100644 fftools/ffmpeg_sched.h

diff --git a/fftools/Makefile b/fftools/Makefile
index 56820e6bc8..d6a8913a7f 100644
--- a/fftools/Makefile
+++ b/fftools/Makefile
@@ -18,6 +18,7 @@ OBJS-ffmpeg +=  \
 fftools/ffmpeg_mux.o\
 fftools/ffmpeg_mux_init.o   \
 fftools/ffmpeg_opt.o\
+fftools/ffmpeg_sched.o  \
 fftools/objpool.o   \
 fftools/sync_queue.o\
 fftools/thread_queue.o  \
diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c
index f2293e0250..1a58bf98cf 100644
--- a/fftools/ffmpeg.c
+++ b/fftools/ffmpeg.c
@@ -99,6 +99,7 @@
 
 #include "cmdutils.h"
 #include "ffmpeg.h"
+#include "ffmpeg_sched.h"
 #include "ffmpeg_utils.h"
 #include "sync_queue.h"
 
@@ -1123,7 +1124,7 @@ static int transcode_step(OutputStream *ost, AVPacket 
*demux_pkt)
 /*
  * The following code is the main loop of the file converter
  */
-static int transcode(int *err_rate_exceeded)
+static int transcode(Scheduler *sch, int *err_rate_exceeded)
 {
 int ret = 0, i;
 InputStream *ist;
@@ -1261,6 +1262,8 @@ static int64_t getmaxrss(void)
 
 int main(int argc, char **argv)
 {
+Scheduler *sch = NULL;
+
 int ret, err_rate_exceeded;
 BenchmarkTimeStamps ti;
 
@@ -1278,8 +1281,14 @@ int main(int argc, char **argv)
 
 show_banner(argc, argv, options);
 
+sch = sch_alloc();
+if (!sch) {
+ret = AVERROR(ENOMEM);
+goto finish;
+}
+
 /* parse options and open all input/output files */
-ret = ffmpeg_parse_options(argc, argv);
+ret = ffmpeg_parse_options(argc, argv, sch);
 if (ret < 0)
 goto finish;
 
@@ -1297,7 +1306,7 @@ int main(int argc, char **argv)
 }
 
 current_time = ti = get_benchmark_time_stamps();
-ret = transcode(&err_rate_exceeded);
+ret = transcode(sch, &err_rate_exceeded);
 if (ret >= 0 && do_benchmark) {
 int64_t utime, stime, rtime;
 current_time = get_benchmark_time_stamps();
@@ -1317,5 +1326,8 @@ finish:
 ret = 0;
 
 ffmpeg_cleanup(ret);
+
+sch_free(&sch);
+
 return ret;
 }
diff --git a/fftools/ffmpeg.h b/fftools/ffmpeg.h
index c954ed5ebf..5833f85ab5 100644
--- a/fftools/ffmpeg.h
+++ b/fftools/ffmpeg.h
@@ -27,6 +27,7 @@
 #include 
 
 #include "cmdutils.h"
+#include "ffmpeg_sched.h"
 #include "sync_queue.h"
 
 #include "libavformat/avformat.h"
@@ -713,7 +714,8 @@ int parse_and_set_vsync(const char *arg, int *vsync_var, 
int file_idx, int st_id
 int check_filter_outputs(void);
 int filtergraph_is_simple(const FilterGraph *fg);
 int init_simple_filtergraph(InputStream *ist, OutputStream *ost,
-char *graph_desc);
+char *graph_desc,
+Scheduler *sch, unsigned sch_idx_enc);
 int init_complex_filtergraph(FilterGraph *fg);
 
 int copy_av_subtitle(AVSubtitle *dst, const AVSubtitle *src);
@@ -736,7 +738,8 @@ void ifilter_sub2video_heartbeat(InputFilter *ifilter, 
int64_t pts, AVRational t
  */
 int ifilter_parameters_from_dec(InputFilter *ifilter, const AVCodecContext 
*dec);
 
-int ofilter_bind_ost(OutputFilter *ofilter, OutputStream *ost);
+int ofilter_bind_ost(OutputFilter *ofilter, OutputStream *ost,
+ unsigned sched_idx_enc);
 
 /**
  * Create a new filtergraph in the global filtergraph list.
@@ -744,7 +747,7 @@ int ofilter_bind_ost(OutputFilter *ofilter, OutputStream 
*ost);
  * @param graph_desc Graph description; an av_malloc()ed string, filtergraph
  *   takes ownership of it.
  */
-int fg_create(FilterGraph **pfg, char *graph_desc);
+int fg_create(FilterGraph **pfg, char *graph_desc, Scheduler *sch);
 
 void fg_free(FilterGraph **pfg);
 
@@ -768,7 +771,7 @@ void fg_send_command(FilterGraph *fg, double time, const 
char *target,
  */
 int reap_filte

Re: [FFmpeg-devel] [PATCH 18/24] fftools/ffmpeg: add thread-aware transcode scheduling infrastructure

2023-11-09 Thread Anton Khirnov
Quoting Michael Niedermayer (2023-11-04 19:44:09)
> On Sat, Nov 04, 2023 at 08:56:27AM +0100, Anton Khirnov wrote:
> > See the comment block at the top of fftools/ffmpeg_sched.h for more
> > details on what this scheduler is for.
> > 
> > This commit adds the scheduling code itself, along with minimal
> > integration with the rest of the program:
> > * allocating and freeing the scheduler
> > * passing it throughout the call stack in order to register the
> >   individual components (demuxers/decoders/filtergraphs/encoders/muxers)
> >   with the scheduler
> > 
> > The scheduler is not actually used as of this commit, so it should not
> > result in any change in behavior. That will change in future commits.
> > ---
> >  fftools/Makefile  |1 +
> >  fftools/ffmpeg.c  |   18 +-
> >  fftools/ffmpeg.h  |   24 +-
> >  fftools/ffmpeg_dec.c  |   10 +-
> >  fftools/ffmpeg_demux.c|   46 +-
> >  fftools/ffmpeg_enc.c  |   13 +-
> >  fftools/ffmpeg_filter.c   |   37 +-
> >  fftools/ffmpeg_mux.c  |   17 +-
> >  fftools/ffmpeg_mux.h  |   11 +
> >  fftools/ffmpeg_mux_init.c |   82 +-
> >  fftools/ffmpeg_opt.c  |   22 +-
> >  fftools/ffmpeg_sched.c| 2072 +
> >  fftools/ffmpeg_sched.h|  461 +
> >  13 files changed, 2758 insertions(+), 56 deletions(-)
> >  create mode 100644 fftools/ffmpeg_sched.c
> >  create mode 100644 fftools/ffmpeg_sched.h
> 
> Is fate intended to pass for each point in the patchset ?

19-24 will be squashed on push, so 19-23 are not supposed to pass fate,
work at all, or even build. All other points are supposed to pass fate.

> 
> make -j32 fate-h264-skip-nointra
> seems to fail after this

fixed

Thanks,
-- 
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 14/24] fftools/ffmpeg_mux: move bitstream filtering to the muxer thread

2023-11-09 Thread Anton Khirnov
Quoting James Almer (2023-11-04 14:39:44)
> On 11/4/2023 4:56 AM, Anton Khirnov wrote:
> > This will be the appropriate place for it after the rest of transcoding
> > is switched to a threaded architecture.
> > ---
> >   fftools/ffmpeg_mux.c | 112 ++-
> >   1 file changed, 67 insertions(+), 45 deletions(-)
> > 
> > diff --git a/fftools/ffmpeg_mux.c b/fftools/ffmpeg_mux.c
> > index 82352b7981..57fb8a8413 100644
> > --- a/fftools/ffmpeg_mux.c
> > +++ b/fftools/ffmpeg_mux.c
> > @@ -207,6 +207,67 @@ static int sync_queue_process(Muxer *mux, OutputStream 
> > *ost, AVPacket *pkt, int
> >   return 0;
> >   }
> >   
> > +/* apply the output bitstream filters */
> > +static int mux_packet_filter(Muxer *mux, OutputStream *ost,
> > + AVPacket *pkt, int *stream_eof)
> > +{
> > +MuxStream *ms = ms_from_ost(ost);
> > +const char *err_msg;
> > +int ret = 0;
> > +
> > +if (ms->bsf_ctx) {
> > +int bsf_eof = 0;
> > +
> > +if (pkt)
> > +av_packet_rescale_ts(pkt, pkt->time_base, 
> > ms->bsf_ctx->time_base_in);
> > +
> > +ret = av_bsf_send_packet(ms->bsf_ctx, pkt);
> > +if (ret < 0) {
> 
> Unrelated to this patch, but this should probably include a comment 
> about the reason we're not checking for EAGAIN, like we do for 
> avcodec_send_packet().

Isn't the situation pretty much the same here - seeing EAGAIN would be a
bug?

-- 
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".


[FFmpeg-devel] [PATCH v2 10/24] fftools/ffmpeg_filter: move filtering to a separate thread

2023-11-09 Thread Anton Khirnov
As previously for decoding, this is merely "scaffolding" for moving to a
fully threaded architecture and does not yet make filtering truly
parallel - the main thread will currently wait for the filtering thread
to finish its work before continuing. That will change in future commits
after encoders are also moved to threads and a thread-aware scheduler is
added.
---
Thanks for the report, fixed.
---
 fftools/ffmpeg.h|   9 +-
 fftools/ffmpeg_dec.c|  39 +-
 fftools/ffmpeg_filter.c | 825 ++--
 3 files changed, 730 insertions(+), 143 deletions(-)

diff --git a/fftools/ffmpeg.h b/fftools/ffmpeg.h
index 41935d39d5..9852df8320 100644
--- a/fftools/ffmpeg.h
+++ b/fftools/ffmpeg.h
@@ -80,6 +80,14 @@ enum HWAccelID {
 HWACCEL_GENERIC,
 };
 
+enum FrameOpaque {
+FRAME_OPAQUE_REAP_FILTERS = 1,
+FRAME_OPAQUE_CHOOSE_INPUT,
+FRAME_OPAQUE_SUB_HEARTBEAT,
+FRAME_OPAQUE_EOF,
+FRAME_OPAQUE_SEND_COMMAND,
+};
+
 typedef struct HWDevice {
 const char *name;
 enum AVHWDeviceType type;
@@ -728,7 +736,6 @@ FrameData *frame_data(AVFrame *frame);
 
 int ifilter_send_frame(InputFilter *ifilter, AVFrame *frame, int 
keep_reference);
 int ifilter_send_eof(InputFilter *ifilter, int64_t pts, AVRational tb);
-int ifilter_sub2video(InputFilter *ifilter, const AVFrame *frame);
 void ifilter_sub2video_heartbeat(InputFilter *ifilter, int64_t pts, AVRational 
tb);
 
 /**
diff --git a/fftools/ffmpeg_dec.c b/fftools/ffmpeg_dec.c
index 517d6b3ced..b60bad1220 100644
--- a/fftools/ffmpeg_dec.c
+++ b/fftools/ffmpeg_dec.c
@@ -147,11 +147,12 @@ fail:
 
 static int send_frame_to_filters(InputStream *ist, AVFrame *decoded_frame)
 {
-int i, ret;
+int i, ret = 0;
 
-av_assert1(ist->nb_filters > 0); /* ensure ret is initialized */
 for (i = 0; i < ist->nb_filters; i++) {
-ret = ifilter_send_frame(ist->filters[i], decoded_frame, i < 
ist->nb_filters - 1);
+ret = ifilter_send_frame(ist->filters[i], decoded_frame,
+ i < ist->nb_filters - 1 ||
+ ist->dec->type == AVMEDIA_TYPE_SUBTITLE);
 if (ret == AVERROR_EOF)
 ret = 0; /* ignore */
 if (ret < 0) {
@@ -380,15 +381,6 @@ static int video_frame_process(InputStream *ist, AVFrame 
*frame)
 return 0;
 }
 
-static void sub2video_flush(InputStream *ist)
-{
-for (int i = 0; i < ist->nb_filters; i++) {
-int ret = ifilter_sub2video(ist->filters[i], NULL);
-if (ret != AVERROR_EOF && ret < 0)
-av_log(NULL, AV_LOG_WARNING, "Flush the frame error.\n");
-}
-}
-
 static int process_subtitle(InputStream *ist, AVFrame *frame)
 {
 Decoder *d = ist->decoder;
@@ -426,14 +418,9 @@ static int process_subtitle(InputStream *ist, AVFrame 
*frame)
 if (!subtitle)
 return 0;
 
-for (int i = 0; i < ist->nb_filters; i++) {
-ret = ifilter_sub2video(ist->filters[i], frame);
-if (ret < 0) {
-av_log(ist, AV_LOG_ERROR, "Error sending a subtitle for filtering: 
%s\n",
-   av_err2str(ret));
-return ret;
-}
-}
+ret = send_frame_to_filters(ist, frame);
+if (ret < 0)
+return ret;
 
 subtitle = (AVSubtitle*)frame->buf[0]->data;
 if (!subtitle->num_rects)
@@ -824,14 +811,10 @@ finish:
 return ret;
 
 // signal EOF to our downstreams
-if (ist->dec->type == AVMEDIA_TYPE_SUBTITLE)
-sub2video_flush(ist);
-else {
-ret = send_filter_eof(ist);
-if (ret < 0) {
-av_log(NULL, AV_LOG_FATAL, "Error marking filters as finished\n");
-return ret;
-}
+ret = send_filter_eof(ist);
+if (ret < 0) {
+av_log(NULL, AV_LOG_FATAL, "Error marking filters as finished\n");
+return ret;
 }
 
 return AVERROR_EOF;
diff --git a/fftools/ffmpeg_filter.c b/fftools/ffmpeg_filter.c
index f0b8e01f5c..9030cc656e 100644
--- a/fftools/ffmpeg_filter.c
+++ b/fftools/ffmpeg_filter.c
@@ -21,6 +21,8 @@
 #include 
 
 #include "ffmpeg.h"
+#include "ffmpeg_utils.h"
+#include "thread_queue.h"
 
 #include "libavfilter/avfilter.h"
 #include "libavfilter/buffersink.h"
@@ -53,12 +55,50 @@ typedef struct FilterGraphPriv {
 int is_meta;
 int disable_conversions;
 
+int nb_inputs_bound;
+int nb_outputs_bound;
+
 const char *graph_desc;
 
 // frame for temporarily holding output from the filtergraph
 AVFrame *frame;
 // frame for sending output to the encoder
 AVFrame *frame_enc;
+
+pthread_tthread;
+/**
+ * Queue for sending frames from the main thread to the filtergraph. Has
+ * nb_inputs+1 streams - the first nb_inputs stream correspond to
+ * filtergraph inputs. Frames on those streams may have their opaque set to
+ * - FRAME_OPAQUE_EOF: frame contains no data, but pts+timebase of the
+ *   EOF event for the correspondint stream. Will be immediately followed 
by
+ *   this str

Re: [FFmpeg-devel] [PATCH] ffmpeg CLI multithreading

2023-11-09 Thread Anton Khirnov
If nobody objects, I will push 01-07/24 soonish.

-- 
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 14/24] fftools/ffmpeg_mux: move bitstream filtering to the muxer thread

2023-11-09 Thread James Almer

On 11/9/2023 8:41 AM, Anton Khirnov wrote:

Quoting James Almer (2023-11-04 14:39:44)

On 11/4/2023 4:56 AM, Anton Khirnov wrote:

This will be the appropriate place for it after the rest of transcoding
is switched to a threaded architecture.
---
   fftools/ffmpeg_mux.c | 112 ++-
   1 file changed, 67 insertions(+), 45 deletions(-)

diff --git a/fftools/ffmpeg_mux.c b/fftools/ffmpeg_mux.c
index 82352b7981..57fb8a8413 100644
--- a/fftools/ffmpeg_mux.c
+++ b/fftools/ffmpeg_mux.c
@@ -207,6 +207,67 @@ static int sync_queue_process(Muxer *mux, OutputStream 
*ost, AVPacket *pkt, int
   return 0;
   }
   
+/* apply the output bitstream filters */

+static int mux_packet_filter(Muxer *mux, OutputStream *ost,
+ AVPacket *pkt, int *stream_eof)
+{
+MuxStream *ms = ms_from_ost(ost);
+const char *err_msg;
+int ret = 0;
+
+if (ms->bsf_ctx) {
+int bsf_eof = 0;
+
+if (pkt)
+av_packet_rescale_ts(pkt, pkt->time_base, 
ms->bsf_ctx->time_base_in);
+
+ret = av_bsf_send_packet(ms->bsf_ctx, pkt);
+if (ret < 0) {


Unrelated to this patch, but this should probably include a comment
about the reason we're not checking for EAGAIN, like we do for
avcodec_send_packet().


Isn't the situation pretty much the same here - seeing EAGAIN would be a
bug?


Yes, and a similar comment here is a good idea as people may use 
ffmpeg.c as a reference implementation for our APIs.

___
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] [ANNOUNCE] upcoming vote: extra members for GA

2023-11-09 Thread Michael Niedermayer
On Thu, Nov 09, 2023 at 10:44:12AM +0100, Anton Khirnov wrote:
> As nobody expressed a preference, the vote will start next Monday
> (2023-11-13). It should run for a week, and will be followed by TC/CC
> elections.
> 
> The only extra GA candidate I see proposed so far is Ronald. If anyone
> wants to suggest further people, please do so in this thread ASAP.

IMHO the question of the relation of the list of people who could vote
in the last GA vote and the people who where in the general assembly
in 2020 should be awnsered before further votes.
https://lists.ffmpeg.org/pipermail/ffmpeg-devel/2023-November/316609.html

If the current GA stays as it is, then i propose the following people
(this list was quickly made and certainly has omisions and possibly errors,
check anything thats important to you!)

The presumed 2020 General assembly as well as people who have subtantial
contributions over the lifetime of the project where the source of this list

Fabrice Bellard(Founder of the project over 600 commits in FFmpeg)
Aman Karmani   (17 authored commits in 2020-2023, recently active in 
2023-June and work all over the codebase)
Baptiste Coudurier (Pays for our fate server since forever, maintains 15 things 
in MAINTAINERs, is the the copyright of 56 files, over 1900 commits in FFmpeg)
Moritz Barsnick(Member of the 2020 GA but was not on jbs list)
Lauri Kasanen  (Linux / PowerPC maintainer)
Dale Curtis(14 commits in 2020 was in the 2020-GA)
Alexander Strasser (Root admin, just recently reported that he could not vote 
even though he was in teh 2020-GA, 3 things in MAINTAINERs)
foo86  (maintainer and author of dca*, dolby_e*, dtsdec, s337m)
Huiwen Ren (8 matches in the codebase of his name, avs2* and related 
things maintainer)
Martin Vignali (over 200 commits in FFmpeg, left in 2019 because of 
hostility)
Lou Logan  (over 100 commits in FFmpeg, left in 2020, also in the 
2020-GA but not on jbs list)
Matthieu Bouron(over 200 commits in FFmpeg, recently active in 2022, 5 
entries in MAINTAINERs, 25 in copyrights)
Ruiling Song   (vf_tonemap_opencl maintainer, added SIMD code to various 
bits of code, last active in git in 2020)
John Stebbins  (over 100 commits in FFmpeg, last active in git in 2020, 1 
copyright match)
Ting Fu(last active in April 2023, 24 commits in 2021-2023, )
Tobias Rapp(vf_readvitc mainatiner, last commit in Jul 2023, 88 commits 
in FFmpeg)
Shiyou Yin (MIPS & LoongArch maintainer, 24 matches for his name in the 
source, last commit May 2023)
Reimar Döffinger   (over 1400 commits in FFmpeg, root admin and last commit in 
Oct 2023, 49 matches for his name in the codebase)
Aurelien Jacobs(over 1000 commits in FFmpeg, 13 entries in MAINTAINERs, 70 
copyright line matches)
Hendrik Leppkes(over 900 commits in FFmpeg, 2 entries in MAINTAINERs, 4 
copyrights, last commit in Jul 2023)
Vitor Sessak   (over 900 commits in FFmpeg, 28 copyright matches)
Kostya Shishkov(over 900 commits in FFmpeg, 162 copyright matches)
Ramiro Polla   (over 600 commits in FFmpeg, 5 matches in MAINTAINERs, 22 
copyright matches)
Alex Converse  (over 500 commits in FFmpeg, 32 copyright matches)
Janne Grunau   (over 500 commits in FFmpeg, 24 copyright matches)
Andreas Cadhalpun  (over 400 commits in FFmpeg, 2 copyright matches)

thx

[...]
-- 
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

I know you won't believe me, but the highest form of Human Excellence is
to question oneself and others. -- Socrates


signature.asc
Description: PGP signature
___
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 14/24] fftools/ffmpeg_mux: move bitstream filtering to the muxer thread

2023-11-09 Thread Anton Khirnov
Quoting James Almer (2023-11-09 12:47:56)
> On 11/9/2023 8:41 AM, Anton Khirnov wrote:
> > Quoting James Almer (2023-11-04 14:39:44)
> >> On 11/4/2023 4:56 AM, Anton Khirnov wrote:
> >>> This will be the appropriate place for it after the rest of transcoding
> >>> is switched to a threaded architecture.
> >>> ---
> >>>fftools/ffmpeg_mux.c | 112 ++-
> >>>1 file changed, 67 insertions(+), 45 deletions(-)
> >>>
> >>> diff --git a/fftools/ffmpeg_mux.c b/fftools/ffmpeg_mux.c
> >>> index 82352b7981..57fb8a8413 100644
> >>> --- a/fftools/ffmpeg_mux.c
> >>> +++ b/fftools/ffmpeg_mux.c
> >>> @@ -207,6 +207,67 @@ static int sync_queue_process(Muxer *mux, 
> >>> OutputStream *ost, AVPacket *pkt, int
> >>>return 0;
> >>>}
> >>>
> >>> +/* apply the output bitstream filters */
> >>> +static int mux_packet_filter(Muxer *mux, OutputStream *ost,
> >>> + AVPacket *pkt, int *stream_eof)
> >>> +{
> >>> +MuxStream *ms = ms_from_ost(ost);
> >>> +const char *err_msg;
> >>> +int ret = 0;
> >>> +
> >>> +if (ms->bsf_ctx) {
> >>> +int bsf_eof = 0;
> >>> +
> >>> +if (pkt)
> >>> +av_packet_rescale_ts(pkt, pkt->time_base, 
> >>> ms->bsf_ctx->time_base_in);
> >>> +
> >>> +ret = av_bsf_send_packet(ms->bsf_ctx, pkt);
> >>> +if (ret < 0) {
> >>
> >> Unrelated to this patch, but this should probably include a comment
> >> about the reason we're not checking for EAGAIN, like we do for
> >> avcodec_send_packet().
> > 
> > Isn't the situation pretty much the same here - seeing EAGAIN would be a
> > bug?
> 
> Yes, and a similar comment here is a good idea as people may use 
> ffmpeg.c as a reference implementation for our APIs.

Right, then certainly there should be a comment or maybe even a check
like for decoding.

-- 
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] [ANNOUNCE] upcoming vote: extra members for GA

2023-11-09 Thread Vittorio Giovara
On Thu, Nov 9, 2023 at 6:55 AM Michael Niedermayer 
wrote:

> Fabrice Bellard(Founder of the project over 600 commits in FFmpeg)
> Aman Karmani   (17 authored commits in 2020-2023, recently active in
> 2023-June and work all over the codebase)
> Baptiste Coudurier (Pays for our fate server since forever, maintains 15
> things in MAINTAINERs, is the the copyright of 56 files, over 1900 commits
> in FFmpeg)
> Moritz Barsnick(Member of the 2020 GA but was not on jbs list)
> Lauri Kasanen  (Linux / PowerPC maintainer)
> Dale Curtis(14 commits in 2020 was in the 2020-GA)
> Alexander Strasser (Root admin, just recently reported that he could not
> vote even though he was in teh 2020-GA, 3 things in MAINTAINERs)
> foo86  (maintainer and author of dca*, dolby_e*, dtsdec, s337m)
> Huiwen Ren (8 matches in the codebase of his name, avs2* and
> related things maintainer)
> Martin Vignali (over 200 commits in FFmpeg, left in 2019 because of
> hostility)
> Lou Logan  (over 100 commits in FFmpeg, left in 2020, also in the
> 2020-GA but not on jbs list)
> Matthieu Bouron(over 200 commits in FFmpeg, recently active in 2022, 5
> entries in MAINTAINERs, 25 in copyrights)
> Ruiling Song   (vf_tonemap_opencl maintainer, added SIMD code to
> various bits of code, last active in git in 2020)
> John Stebbins  (over 100 commits in FFmpeg, last active in git in
> 2020, 1 copyright match)
> Ting Fu(last active in April 2023, 24 commits in 2021-2023, )
> Tobias Rapp(vf_readvitc mainatiner, last commit in Jul 2023, 88
> commits in FFmpeg)
> Shiyou Yin (MIPS & LoongArch maintainer, 24 matches for his name
> in the source, last commit May 2023)
> Reimar Döffinger   (over 1400 commits in FFmpeg, root admin and last
> commit in Oct 2023, 49 matches for his name in the codebase)
> Aurelien Jacobs(over 1000 commits in FFmpeg, 13 entries in
> MAINTAINERs, 70 copyright line matches)
> Hendrik Leppkes(over 900 commits in FFmpeg, 2 entries in MAINTAINERs,
> 4 copyrights, last commit in Jul 2023)
> Vitor Sessak   (over 900 commits in FFmpeg, 28 copyright matches)
> Kostya Shishkov(over 900 commits in FFmpeg, 162 copyright matches)
> Ramiro Polla   (over 600 commits in FFmpeg, 5 matches in MAINTAINERs,
> 22 copyright matches)
> Alex Converse  (over 500 commits in FFmpeg, 32 copyright matches)
> Janne Grunau   (over 500 commits in FFmpeg, 24 copyright matches)
> Andreas Cadhalpun  (over 400 commits in FFmpeg, 2 copyright matches)
>

just noting some people in the list have cut ties with this project and
would much rather not be involved in anything related to ffmpeg - as a rule
of thumb it's probably safe to omit inactive developers and inactive
founders from the list, in my opinion
-- 
Vittorio
___
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] [ANNOUNCE] upcoming vote: extra members for GA

2023-11-09 Thread Jean-Baptiste Kempf



On Thu, 9 Nov 2023, at 12:55, Michael Niedermayer wrote:
> If the current GA stays as it is, then i propose the following people

Most of those people have not been active for years.

Adding the people who were part of the GA before; 
or are just under the threshold, but were active before;
or are part of the infra teams and packaging;
seem sane to add to the ballot.

But the others seem totally inactive in this community, even if they were added 
to MAINTAINERS file a long time ago.
And there are people who don't contribute, because their corporate sponsor is 
not employing them anymore.

Best,

-- 
Jean-Baptiste Kempf -  President
+33 672 704 734
___
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] [ANN] Poll Results: GA voters list updates

2023-11-09 Thread Anton Khirnov
Quoting Alexander Strasser (2023-11-06 16:56:55)
> Hi all,
> hi J-B!
> 
> On 2023-11-06 07:10 +0100, Jean-Baptiste Kempf wrote:
> > Yo,
> >
> > Time is up, results are here:
> > https://vote.ffmpeg.org/cgi-bin/civs/results.pl?id=E_029f7195fed7aadf
> 
> Should I have been mailed about this vote?
> 
> I'm pretty sure I could vote in 2020. Or am I just missing something?

As per the rules:
> Additional members are added to the General Assembly through a vote
> after proposal by a member of the General Assembly. They are part of
> the GA for two years, after which they need a confirmation by the GA.

your voting rights expired after 2 years and were not renewed, since
nobody organized a new vote.

-- 
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] [ANNOUNCE] upcoming vote: extra members for GA

2023-11-09 Thread Anton Khirnov
Quoting Michael Niedermayer (2023-11-09 12:55:25)
> On Thu, Nov 09, 2023 at 10:44:12AM +0100, Anton Khirnov wrote:
> > As nobody expressed a preference, the vote will start next Monday
> > (2023-11-13). It should run for a week, and will be followed by TC/CC
> > elections.
> > 
> > The only extra GA candidate I see proposed so far is Ronald. If anyone
> > wants to suggest further people, please do so in this thread ASAP.
> 
> IMHO the question of the relation of the list of people who could vote
> in the last GA vote and the people who where in the general assembly
> in 2020 should be awnsered before further votes.
> https://lists.ffmpeg.org/pipermail/ffmpeg-devel/2023-November/316609.html

As far as I can tell, the voter list in the last vote should be the same
as the GA from 2020, except for the extra members whose voting rights
expire after 2 years.

Do you dispute that? 

> If the current GA stays as it is, then i propose the following people
> (this list was quickly made and certainly has omisions and possibly errors,
> check anything thats important to you!)
> 
> The presumed 2020 General assembly as well as people who have subtantial
> contributions over the lifetime of the project where the source of this list

> Ting Fu(last active in April 2023, 24 commits in 2021-2023, )

He actually is in the GA, but his Intel mailbox bounces.

> Fabrice Bellard(Founder of the project over 600 commits in FFmpeg)
> Aman Karmani   (17 authored commits in 2020-2023, recently active in 
> 2023-June and work all over the codebase)
> Baptiste Coudurier (Pays for our fate server since forever, maintains 15 
> things in MAINTAINERs, is the the copyright of 56 files, over 1900 commits in 
> FFmpeg)
> Moritz Barsnick(Member of the 2020 GA but was not on jbs list)
> Lauri Kasanen  (Linux / PowerPC maintainer)
> Dale Curtis(14 commits in 2020 was in the 2020-GA)
> Alexander Strasser (Root admin, just recently reported that he could not vote 
> even though he was in teh 2020-GA, 3 things in MAINTAINERs)
> foo86  (maintainer and author of dca*, dolby_e*, dtsdec, s337m)
> Huiwen Ren (8 matches in the codebase of his name, avs2* and related 
> things maintainer)
> Martin Vignali (over 200 commits in FFmpeg, left in 2019 because of 
> hostility)
> Lou Logan  (over 100 commits in FFmpeg, left in 2020, also in the 
> 2020-GA but not on jbs list)
> Matthieu Bouron(over 200 commits in FFmpeg, recently active in 2022, 5 
> entries in MAINTAINERs, 25 in copyrights)
> Ruiling Song   (vf_tonemap_opencl maintainer, added SIMD code to various 
> bits of code, last active in git in 2020)
> John Stebbins  (over 100 commits in FFmpeg, last active in git in 2020, 1 
> copyright match)
> Tobias Rapp(vf_readvitc mainatiner, last commit in Jul 2023, 88 
> commits in FFmpeg)
> Shiyou Yin (MIPS & LoongArch maintainer, 24 matches for his name in 
> the source, last commit May 2023)
> Reimar Döffinger   (over 1400 commits in FFmpeg, root admin and last commit 
> in Oct 2023, 49 matches for his name in the codebase)
> Aurelien Jacobs(over 1000 commits in FFmpeg, 13 entries in MAINTAINERs, 
> 70 copyright line matches)
> Hendrik Leppkes(over 900 commits in FFmpeg, 2 entries in MAINTAINERs, 4 
> copyrights, last commit in Jul 2023)
> Vitor Sessak   (over 900 commits in FFmpeg, 28 copyright matches)
> Kostya Shishkov(over 900 commits in FFmpeg, 162 copyright matches)
> Ramiro Polla   (over 600 commits in FFmpeg, 5 matches in MAINTAINERs, 22 
> copyright matches)
> Alex Converse  (over 500 commits in FFmpeg, 32 copyright matches)
> Janne Grunau   (over 500 commits in FFmpeg, 24 copyright matches)
> Andreas Cadhalpun  (over 400 commits in FFmpeg, 2 copyright matches)

Sending voting emails to people who have not had any contact with the
project for years, can be regarded as spamming. I think there should be
some confirmation that these people are actually interested in having
voting rights.

-- 
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] [ANNOUNCE] upcoming vote: extra members for GA

2023-11-09 Thread James Almer

On 11/9/2023 9:21 AM, Anton Khirnov wrote:

Quoting Michael Niedermayer (2023-11-09 12:55:25)

On Thu, Nov 09, 2023 at 10:44:12AM +0100, Anton Khirnov wrote:

As nobody expressed a preference, the vote will start next Monday
(2023-11-13). It should run for a week, and will be followed by TC/CC
elections.

The only extra GA candidate I see proposed so far is Ronald. If anyone
wants to suggest further people, please do so in this thread ASAP.


IMHO the question of the relation of the list of people who could vote
in the last GA vote and the people who where in the general assembly
in 2020 should be awnsered before further votes.
https://lists.ffmpeg.org/pipermail/ffmpeg-devel/2023-November/316609.html


As far as I can tell, the voter list in the last vote should be the same
as the GA from 2020, except for the extra members whose voting rights
expire after 2 years.

Do you dispute that?


If the current GA stays as it is, then i propose the following people
(this list was quickly made and certainly has omisions and possibly errors,
check anything thats important to you!)

The presumed 2020 General assembly as well as people who have subtantial
contributions over the lifetime of the project where the source of this list



Ting Fu(last active in April 2023, 24 commits in 2021-2023, )


He actually is in the GA, but his Intel mailbox bounces.


Fabrice Bellard(Founder of the project over 600 commits in FFmpeg)
Aman Karmani   (17 authored commits in 2020-2023, recently active in 
2023-June and work all over the codebase)
Baptiste Coudurier (Pays for our fate server since forever, maintains 15 things 
in MAINTAINERs, is the the copyright of 56 files, over 1900 commits in FFmpeg)
Moritz Barsnick(Member of the 2020 GA but was not on jbs list)
Lauri Kasanen  (Linux / PowerPC maintainer)
Dale Curtis(14 commits in 2020 was in the 2020-GA)
Alexander Strasser (Root admin, just recently reported that he could not vote 
even though he was in teh 2020-GA, 3 things in MAINTAINERs)
foo86  (maintainer and author of dca*, dolby_e*, dtsdec, s337m)
Huiwen Ren (8 matches in the codebase of his name, avs2* and related 
things maintainer)
Martin Vignali (over 200 commits in FFmpeg, left in 2019 because of 
hostility)
Lou Logan  (over 100 commits in FFmpeg, left in 2020, also in the 
2020-GA but not on jbs list)
Matthieu Bouron(over 200 commits in FFmpeg, recently active in 2022, 5 
entries in MAINTAINERs, 25 in copyrights)
Ruiling Song   (vf_tonemap_opencl maintainer, added SIMD code to various 
bits of code, last active in git in 2020)
John Stebbins  (over 100 commits in FFmpeg, last active in git in 2020, 1 
copyright match)
Tobias Rapp(vf_readvitc mainatiner, last commit in Jul 2023, 88 commits 
in FFmpeg)
Shiyou Yin (MIPS & LoongArch maintainer, 24 matches for his name in the 
source, last commit May 2023)
Reimar Döffinger   (over 1400 commits in FFmpeg, root admin and last commit in 
Oct 2023, 49 matches for his name in the codebase)
Aurelien Jacobs(over 1000 commits in FFmpeg, 13 entries in MAINTAINERs, 70 
copyright line matches)
Hendrik Leppkes(over 900 commits in FFmpeg, 2 entries in MAINTAINERs, 4 
copyrights, last commit in Jul 2023)
Vitor Sessak   (over 900 commits in FFmpeg, 28 copyright matches)
Kostya Shishkov(over 900 commits in FFmpeg, 162 copyright matches)
Ramiro Polla   (over 600 commits in FFmpeg, 5 matches in MAINTAINERs, 22 
copyright matches)
Alex Converse  (over 500 commits in FFmpeg, 32 copyright matches)
Janne Grunau   (over 500 commits in FFmpeg, 24 copyright matches)
Andreas Cadhalpun  (over 400 commits in FFmpeg, 2 copyright matches)


Sending voting emails to people who have not had any contact with the
project for years, can be regarded as spamming. I think there should be
some confirmation that these people are actually interested in having
voting rights.


Hendrik Leppkes and Reimar Döffinger are active, at least. I agree they 
should be in the GA.

___
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".


[FFmpeg-devel] [PATCH 01/25] avfilter/formats: document ff_default_query_formats

2023-11-09 Thread Niklas Haas
From: Niklas Haas 

In particular, make it clear that this function will not touch format
lists which were already set by the caller before calling into this
function.
---
 libavfilter/formats.h | 4 
 1 file changed, 4 insertions(+)

diff --git a/libavfilter/formats.h b/libavfilter/formats.h
index 4dce2d..d44890109e 100644
--- a/libavfilter/formats.h
+++ b/libavfilter/formats.h
@@ -198,6 +198,10 @@ void ff_channel_layouts_unref(AVFilterChannelLayouts 
**ref);
 void ff_channel_layouts_changeref(AVFilterChannelLayouts **oldref,
   AVFilterChannelLayouts **newref);
 
+/**
+ * Sets all remaining unset filter lists for all inputs/outputs to their
+ * corresponding `ff_all_*()` lists.
+ */
 av_warn_unused_result
 int ff_default_query_formats(AVFilterContext *ctx);
 
-- 
2.42.0

___
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".


[FFmpeg-devel] [RFC PATCH 00/25] YUVJ removal + filter negotiation

2023-11-09 Thread Niklas Haas
Following up on the previous attempts at YUVJ removal, this series
implements full filter negotiation. It is WIP because I still need to go
through the remaining AVCodec (which are not covered by FATE) and
properly tag their colorspace and color range support. (See patch 19/25)

The rest should be good, though, so please feel free to review them with
scrutiny.

I decided to combine YUV range negotiation with YUV colorspace
negotiation. Several important points:

1. We now explicitly ignore YUV metadata for non-YUV (RGB/XYZ/PAL)
   formats, as these have no hope of being useful. In particular, we
   force the colorspace to AVCOL_SPC_RGB, mostly for sanity/consistency.

2. We currently continue treating GRAY formats as forced full range,
   which is the swscale status quo. I have a separate series that adds
   full range negotiation to grayscale formats, but it is out of scope
   of this already ominous series.

It was a delicate balancing act to get the new filter negotiation API
integrated into all core filters (in particular vf_scale and
vf_buffersrc) while maintaining forward and backward compatibility and
not breaking FATE, but I managed to find an order that works, by first
adding support to vf_buffersrc to make sure accurate metadata is
available downstream _before_ we insert any conversion filters.


___
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".


[FFmpeg-devel] [PATCH 02/25] avfilter: always call ff_default_query_formats

2023-11-09 Thread Niklas Haas
From: Niklas Haas 

Even if a query func is set. This is safe to do, because
ff_default_query_formats is documented not to touch any filter lists
that were already set by the query func.

The reason to do this is because it allows us to extend
AVFilterFormatsConfig without having to touch every filter in existence.
An alternative implementation of this commit would be to explicitly add
a `ff_default_query_formats` call at the end of every query_formats
function, but that would end up functionally equivalent to this change
while touching a whole lot more code paths for no reason.

As a bonus, eliminates some code/logic duplication from this function.
---
 libavfilter/avfiltergraph.c | 39 -
 1 file changed, 12 insertions(+), 27 deletions(-)

diff --git a/libavfilter/avfiltergraph.c b/libavfilter/avfiltergraph.c
index 68daa93e61..625cbc022e 100644
--- a/libavfilter/avfiltergraph.c
+++ b/libavfilter/avfiltergraph.c
@@ -341,33 +341,21 @@ static int filter_check_formats(AVFilterContext *ctx)
 static int filter_query_formats(AVFilterContext *ctx)
 {
 int ret;
-AVFilterFormats *formats;
-AVFilterChannelLayouts *chlayouts;
-enum AVMediaType type = ctx->inputs  && ctx->inputs [0] ? ctx->inputs 
[0]->type :
-ctx->outputs && ctx->outputs[0] ? 
ctx->outputs[0]->type :
-AVMEDIA_TYPE_VIDEO;
-
-if ((ret = ctx->filter->formats.query_func(ctx)) < 0) {
-if (ret != AVERROR(EAGAIN))
-av_log(ctx, AV_LOG_ERROR, "Query format failed for '%s': %s\n",
-   ctx->name, av_err2str(ret));
-return ret;
-}
-ret = filter_check_formats(ctx);
-if (ret < 0)
-return ret;
 
-formats = ff_all_formats(type);
-if ((ret = ff_set_common_formats(ctx, formats)) < 0)
-return ret;
-if (type == AVMEDIA_TYPE_AUDIO) {
-if ((ret = ff_set_common_all_samplerates(ctx)) < 0)
+if (ctx->filter->formats_state == FF_FILTER_FORMATS_QUERY_FUNC) {
+if ((ret = ctx->filter->formats.query_func(ctx)) < 0) {
+if (ret != AVERROR(EAGAIN))
+av_log(ctx, AV_LOG_ERROR, "Query format failed for '%s': %s\n",
+   ctx->name, av_err2str(ret));
 return ret;
-chlayouts = ff_all_channel_layouts();
-if ((ret = ff_set_common_channel_layouts(ctx, chlayouts)) < 0)
+}
+
+ret = filter_check_formats(ctx);
+if (ret < 0)
 return ret;
 }
-return 0;
+
+return ff_default_query_formats(ctx);
 }
 
 static int formats_declared(AVFilterContext *f)
@@ -416,10 +404,7 @@ static int query_formats(AVFilterGraph *graph, void 
*log_ctx)
 AVFilterContext *f = graph->filters[i];
 if (formats_declared(f))
 continue;
-if (f->filter->formats_state == FF_FILTER_FORMATS_QUERY_FUNC)
-ret = filter_query_formats(f);
-else
-ret = ff_default_query_formats(f);
+ret = filter_query_formats(f);
 if (ret < 0 && ret != AVERROR(EAGAIN))
 return ret;
 /* note: EAGAIN could indicate a partial success, not counted yet */
-- 
2.42.0

___
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".


[FFmpeg-devel] [PATCH 03/25] avfilter: add negotiation API for color space/range

2023-11-09 Thread Niklas Haas
From: Niklas Haas 

Motivated by YUVJ removal. This change will allow full negotiation
between color ranges and matrices as needed. By default, all ranges and
matrices are marked as supported.

Because grayscale formats are currently handled very inconsistently (and
in particular, assumed as forced full-range by swscale), we exclude them
from negotiation altogether for the time being, to get this API merged.

After filter negotiation is available, we can relax the
grayscale-is-forced-jpeg restriction again, when it will be more
feasible to do so without breaking a million test cases.

Note that this commit updates one FATE test as a consequence of the
sanity fallback for non-YUV formats. In particular, the test case now
writes rgb24(pc, gbr/unspecified/unspecified) to the matroska file,
instead of rgb24(unspecified/unspecified/unspecified) as before.
---
 doc/APIchanges  |   8 ++
 libavfilter/avfilter.c  |  19 -
 libavfilter/avfilter.h  |  28 ++
 libavfilter/avfiltergraph.c | 166 +++-
 libavfilter/formats.c   | 122 +-
 libavfilter/formats.h   |  54 
 libavfilter/internal.h  |   6 ++
 libavfilter/vaapi_vpp.c |   4 +
 libavfilter/version.h   |   2 +-
 libavfilter/video.c |   2 +
 tests/ref/fate/shortest-sub |   4 +-
 11 files changed, 405 insertions(+), 10 deletions(-)

diff --git a/doc/APIchanges b/doc/APIchanges
index 12383a28d3..ce3f90a674 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -2,6 +2,14 @@ The last version increases of all libraries were on 2023-02-09
 
 API changes, most recent first:
 
+2023-11-xx - xx - lavf 58.14.100 - avfilter.h formats.h
+  Add AVFilterFormatsConfig.color_spaces, AVFilterFormatsConfig.color_ranges,
+  AVFilterLink.colorspace, AVFilterLink.color_range, ff_all_color_spaces,
+  ff_all_color_ranges, ff_set_common_color_spaces, ff_set_common_color_ranges,
+  ff_set_common_color_spaces_from_list, ff_set_common_color_ranges_from_list,
+  ff_set_common_all_color_spaces, ff_set_common_all_color_ranges,
+  ff_formats_check_color_spaces, ff_formats_check_color_ranges.
+
 2023-11-08 - xx - lavu 58.32.100 - channel_layout.h
   Add AV_CH_LAYOUT_7POINT2POINT3 and AV_CHANNEL_LAYOUT_7POINT2POINT3.
   Add AV_CH_LAYOUT_9POINT1POINT4_BACK and AV_CHANNEL_LAYOUT_9POINT1POINT4_BACK.
diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c
index ab7782862a..77bfec00c5 100644
--- a/libavfilter/avfilter.c
+++ b/libavfilter/avfilter.c
@@ -185,6 +185,7 @@ int avfilter_link(AVFilterContext *src, unsigned srcpad,
 link->type= src->output_pads[srcpad].type;
 av_assert0(AV_PIX_FMT_NONE == -1 && AV_SAMPLE_FMT_NONE == -1);
 link->format  = -1;
+link->colorspace = AVCOL_SPC_UNSPECIFIED;
 ff_framequeue_init(&link->fifo, &src->graph->internal->frame_queues);
 
 return 0;
@@ -286,6 +287,12 @@ int avfilter_insert_filter(AVFilterLink *link, 
AVFilterContext *filt,
 if (link->outcfg.formats)
 ff_formats_changeref(&link->outcfg.formats,
  &filt->outputs[filt_dstpad_idx]->outcfg.formats);
+if (link->outcfg.color_spaces)
+ff_formats_changeref(&link->outcfg.color_spaces,
+ 
&filt->outputs[filt_dstpad_idx]->outcfg.color_spaces);
+if (link->outcfg.color_ranges)
+ff_formats_changeref(&link->outcfg.color_ranges,
+ 
&filt->outputs[filt_dstpad_idx]->outcfg.color_ranges);
 if (link->outcfg.samplerates)
 ff_formats_changeref(&link->outcfg.samplerates,
  
&filt->outputs[filt_dstpad_idx]->outcfg.samplerates);
@@ -730,6 +737,10 @@ static void free_link(AVFilterLink *link)
 
 ff_formats_unref(&link->incfg.formats);
 ff_formats_unref(&link->outcfg.formats);
+ff_formats_unref(&link->incfg.color_spaces);
+ff_formats_unref(&link->outcfg.color_spaces);
+ff_formats_unref(&link->incfg.color_ranges);
+ff_formats_unref(&link->outcfg.color_ranges);
 ff_formats_unref(&link->incfg.samplerates);
 ff_formats_unref(&link->outcfg.samplerates);
 ff_channel_layouts_unref(&link->incfg.channel_layouts);
@@ -987,9 +998,11 @@ int ff_filter_frame(AVFilterLink *link, AVFrame *frame)
 strcmp(link->dst->filter->name, "idet") &&
 strcmp(link->dst->filter->name, "null") &&
 strcmp(link->dst->filter->name, "scale")) {
-av_assert1(frame->format == link->format);
-av_assert1(frame->width   == link->w);
-av_assert1(frame->height   == link->h);
+av_assert1(frame->format== link->format);
+av_assert1(frame->width == link->w);
+av_assert1(frame->height== link->h);
+av_assert1(frame->colorspace== link->color_space);
+av_assert1(frame->color_range   == link->color_range);
 }
 
 frame->sam

[FFmpeg-devel] [PATCH 04/25] fftools/ffmpeg_filter: don't clear buffersrc params

2023-11-09 Thread Niklas Haas
From: Niklas Haas 

This memset is bogus, it accomplishes nothing in the best case and
regresses future additions to AVBufferSrcParameters in the worst case.
---
 fftools/ffmpeg_filter.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/fftools/ffmpeg_filter.c b/fftools/ffmpeg_filter.c
index b7da105141..e699798897 100644
--- a/fftools/ffmpeg_filter.c
+++ b/fftools/ffmpeg_filter.c
@@ -1400,11 +1400,8 @@ static int configure_input_video_filter(FilterGraph *fg, 
InputFilter *ifilter,
 int ret, pad_idx = 0;
 int64_t tsoffset = 0;
 AVBufferSrcParameters *par = av_buffersrc_parameters_alloc();
-
 if (!par)
 return AVERROR(ENOMEM);
-memset(par, 0, sizeof(*par));
-par->format = AV_PIX_FMT_NONE;
 
 if (ist->dec_ctx->codec_type == AVMEDIA_TYPE_AUDIO) {
 av_log(fg, AV_LOG_ERROR, "Cannot connect video filter to audio 
input\n");
-- 
2.42.0

___
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".


[FFmpeg-devel] [PATCH 12/25] avfilter/vf_libplacebo: switch to colorspace negotiation API

2023-11-09 Thread Niklas Haas
From: Niklas Haas 

---
 libavfilter/vf_libplacebo.c | 25 ++---
 1 file changed, 14 insertions(+), 11 deletions(-)

diff --git a/libavfilter/vf_libplacebo.c b/libavfilter/vf_libplacebo.c
index b6e82a61e0..a9a3d884ce 100644
--- a/libavfilter/vf_libplacebo.c
+++ b/libavfilter/vf_libplacebo.c
@@ -882,6 +882,8 @@ static int output_frame(AVFilterContext *ctx, int64_t pts)
 out->pts = pts;
 out->width = outlink->w;
 out->height = outlink->h;
+out->colorspace = outlink->colorspace;
+out->color_range = outlink->color_range;
 if (s->fps.num)
 out->duration = 1;
 
@@ -892,22 +894,11 @@ static int output_frame(AVFilterContext *ctx, int64_t pts)
 out->color_trc = AVCOL_TRC_SMPTE2084;
 }
 
-if (s->colorspace >= 0)
-out->colorspace = s->colorspace;
-if (s->color_range >= 0)
-out->color_range = s->color_range;
 if (s->color_trc >= 0)
 out->color_trc = s->color_trc;
 if (s->color_primaries >= 0)
 out->color_primaries = s->color_primaries;
 
-/* Sanity colorspace overrides */
-if (outdesc->flags & AV_PIX_FMT_FLAG_RGB) {
-out->colorspace = AVCOL_SPC_RGB;
-} else if (out->colorspace == AVCOL_SPC_RGB) {
-out->colorspace = AVCOL_SPC_UNSPECIFIED;
-}
-
 changed_csp = ref->colorspace  != out->colorspace ||
   ref->color_range != out->color_range||
   ref->color_trc   != out->color_trc  ||
@@ -1203,6 +1194,18 @@ static int libplacebo_query_format(AVFilterContext *ctx)
 for (int i = 0; i < s->nb_inputs; i++)
 RET(ff_formats_ref(infmts, &ctx->inputs[i]->outcfg.formats));
 RET(ff_formats_ref(outfmts, &ctx->outputs[0]->incfg.formats));
+
+/* Set colorspace properties */
+RET(ff_formats_ref(ff_all_color_spaces(), 
&ctx->inputs[0]->outcfg.color_spaces));
+RET(ff_formats_ref(ff_all_color_ranges(), 
&ctx->inputs[0]->outcfg.color_ranges));
+
+outfmts = s->colorspace > 0 ? ff_make_formats_list_singleton(s->colorspace)
+: ff_all_color_spaces();
+RET(ff_formats_ref(outfmts, &ctx->outputs[0]->incfg.color_spaces));
+
+outfmts = s->color_range > 0 ? 
ff_make_formats_list_singleton(s->color_range)
+ : ff_all_color_ranges();
+RET(ff_formats_ref(outfmts, &ctx->outputs[0]->incfg.color_ranges));
 return 0;
 
 fail:
-- 
2.42.0

___
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".


[FFmpeg-devel] [PATCH 14/25] avfilter/vf_format: re-use AVFilterList for pix_fmt parsing

2023-11-09 Thread Niklas Haas
From: Niklas Haas 

Rewrite the format parsing code to make it more easily generalizable. In
particular, `invert_formats` does not depend on the type of format list
passed to it, which allows me to re-use this helper in an upcoming
commit.

Slightly shortens the code, at the sole cost of doing several malloc
(ff_add_format) instead of a single malloc.
---
 libavfilter/vf_format.c | 103 +---
 1 file changed, 43 insertions(+), 60 deletions(-)

diff --git a/libavfilter/vf_format.c b/libavfilter/vf_format.c
index 1189bd61c2..b137e3075e 100644
--- a/libavfilter/vf_format.c
+++ b/libavfilter/vf_format.c
@@ -41,25 +41,48 @@ typedef struct FormatContext {
 const AVClass *class;
 char *pix_fmts;
 
-/**
- * pix_fmts parsed into AVPixelFormats and terminated with
- * AV_PIX_FMT_NONE
- */
-enum AVPixelFormat *formats;
+AVFilterFormats *formats; ///< parsed from `pix_fmts`
 } FormatContext;
 
 static av_cold void uninit(AVFilterContext *ctx)
 {
 FormatContext *s = ctx->priv;
-av_freep(&s->formats);
+ff_formats_unref(&s->formats);
+}
+
+static av_cold int invert_formats(AVFilterFormats **fmts,
+   AVFilterFormats *allfmts)
+{
+if (!allfmts)
+return AVERROR(ENOMEM);
+if (!*fmts) {
+/* empty fmt list means no restriction, regardless of filter type */
+ff_formats_unref(&allfmts);
+return 0;
+}
+
+for (int i = 0; i < allfmts->nb_formats; i++) {
+for (int j = 0; j < (*fmts)->nb_formats; j++) {
+if (allfmts->formats[i] == (*fmts)->formats[j]) {
+/* format is forbidden, remove it from allfmts list */
+memmove(&allfmts->formats[i], &allfmts->formats[i+1],
+(allfmts->nb_formats - (i+1)) * 
sizeof(*allfmts->formats));
+allfmts->nb_formats--;
+i--; /* repeat loop with same idx */
+break;
+}
+}
+}
+
+ff_formats_unref(fmts);
+*fmts = allfmts;
+return 0;
 }
 
 static av_cold int init(AVFilterContext *ctx)
 {
 FormatContext *s = ctx->priv;
-char *cur, *sep;
-int nb_formats = 1;
-int i;
+enum AVPixelFormat pix_fmt;
 int ret;
 
 if (!s->pix_fmts) {
@@ -67,64 +90,24 @@ static av_cold int init(AVFilterContext *ctx)
 return AVERROR(EINVAL);
 }
 
-/* count the formats */
-cur = s->pix_fmts;
-while ((cur = strchr(cur, '|'))) {
-nb_formats++;
-if (*cur)
-cur++;
-}
-
-s->formats = av_malloc_array(nb_formats + 1, sizeof(*s->formats));
-if (!s->formats)
-return AVERROR(ENOMEM);
-
-/* parse the list of formats */
-cur = s->pix_fmts;
-for (i = 0; i < nb_formats; i++) {
+for (char *sep, *cur = s->pix_fmts; cur; cur = sep) {
 sep = strchr(cur, '|');
-if (sep)
+if (sep && *sep)
 *sep++ = 0;
-
-if ((ret = ff_parse_pixel_format(&s->formats[i], cur, ctx)) < 0)
+if ((ret = ff_parse_pixel_format(&pix_fmt, cur, ctx)) < 0 ||
+(ret = ff_add_format(&s->formats, pix_fmt)) < 0)
 return ret;
-
-cur = sep;
 }
-s->formats[nb_formats] = AV_PIX_FMT_NONE;
 
 if (!strcmp(ctx->filter->name, "noformat")) {
-const AVPixFmtDescriptor *desc = NULL;
-enum AVPixelFormat *formats_allowed;
-int nb_formats_lavu = 0, nb_formats_allowed = 0;
-
-/* count the formats known to lavu */
-while ((desc = av_pix_fmt_desc_next(desc)))
-nb_formats_lavu++;
-
-formats_allowed = av_malloc_array(nb_formats_lavu + 1, 
sizeof(*formats_allowed));
-if (!formats_allowed)
-return AVERROR(ENOMEM);
-
-/* for each format known to lavu, check if it's in the list of
- * forbidden formats */
-while ((desc = av_pix_fmt_desc_next(desc))) {
-enum AVPixelFormat pix_fmt = av_pix_fmt_desc_get_id(desc);
-
-for (i = 0; i < nb_formats; i++) {
-if (s->formats[i] == pix_fmt)
-break;
-}
-if (i < nb_formats)
-continue;
-
-formats_allowed[nb_formats_allowed++] = pix_fmt;
-}
-formats_allowed[nb_formats_allowed] = AV_PIX_FMT_NONE;
-av_freep(&s->formats);
-s->formats = formats_allowed;
+if ((ret = invert_formats(&s->formats, 
ff_all_formats(AVMEDIA_TYPE_VIDEO))) < 0)
+return ret;
 }
 
+/* hold on to a ref for the lifetime of the filter */
+if ((ret = ff_formats_ref(s->formats, &s->formats)) < 0)
+return ret;
+
 return 0;
 }
 
@@ -132,7 +115,7 @@ static int query_formats(AVFilterContext *ctx)
 {
 FormatContext *s = ctx->priv;
 
-return ff_set_common_formats_from_list(ctx, s->formats);
+return ff_set_common_formats(ctx, s->formats);
 }
 
 
-- 
2.42.0

___
ffmpe

[FFmpeg-devel] [PATCH 13/25] avfilter/buffersink: add color space/range accessors

2023-11-09 Thread Niklas Haas
From: Niklas Haas 

Needed for fftools.
---
 doc/APIchanges   | 3 +++
 libavfilter/buffersink.c | 2 ++
 libavfilter/buffersink.h | 2 ++
 libavfilter/version.h| 2 +-
 4 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/doc/APIchanges b/doc/APIchanges
index ce3f90a674..97b6de8276 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -2,6 +2,9 @@ The last version increases of all libraries were on 2023-02-09
 
 API changes, most recent first:
 
+2023-11-xx - xx - lavf 58.15.100 - buffersink.h
+  Add av_buffersink_get_colorspace and av_buffersink_get_color_range.
+
 2023-11-xx - xx - lavf 58.14.100 - avfilter.h formats.h
   Add AVFilterFormatsConfig.color_spaces, AVFilterFormatsConfig.color_ranges,
   AVFilterLink.colorspace, AVFilterLink.color_range, ff_all_color_spaces,
diff --git a/libavfilter/buffersink.c b/libavfilter/buffersink.c
index ca2af1bc07..8fb9ba0fa4 100644
--- a/libavfilter/buffersink.c
+++ b/libavfilter/buffersink.c
@@ -202,6 +202,8 @@ MAKE_AVFILTERLINK_ACCESSOR(AVRational   , frame_rate
 )
 MAKE_AVFILTERLINK_ACCESSOR(int  , w  )
 MAKE_AVFILTERLINK_ACCESSOR(int  , h  )
 MAKE_AVFILTERLINK_ACCESSOR(AVRational   , sample_aspect_ratio)
+MAKE_AVFILTERLINK_ACCESSOR(enum AVColorSpace, colorspace)
+MAKE_AVFILTERLINK_ACCESSOR(enum AVColorRange, color_range)
 
 #if FF_API_OLD_CHANNEL_LAYOUT
 FF_DISABLE_DEPRECATION_WARNINGS
diff --git a/libavfilter/buffersink.h b/libavfilter/buffersink.h
index 64e08de53e..a9374b8b4f 100644
--- a/libavfilter/buffersink.h
+++ b/libavfilter/buffersink.h
@@ -117,6 +117,8 @@ AVRational   av_buffersink_get_frame_rate  
(const AVFilterContext *c
 int  av_buffersink_get_w   (const AVFilterContext 
*ctx);
 int  av_buffersink_get_h   (const AVFilterContext 
*ctx);
 AVRational   av_buffersink_get_sample_aspect_ratio (const AVFilterContext 
*ctx);
+enum AVColorSpace av_buffersink_get_colorspace (const AVFilterContext 
*ctx);
+enum AVColorRange av_buffersink_get_color_range(const AVFilterContext 
*ctx);
 
 int  av_buffersink_get_channels(const AVFilterContext 
*ctx);
 #if FF_API_OLD_CHANNEL_LAYOUT
diff --git a/libavfilter/version.h b/libavfilter/version.h
index 7642b670d1..59330858bd 100644
--- a/libavfilter/version.h
+++ b/libavfilter/version.h
@@ -31,7 +31,7 @@
 
 #include "version_major.h"
 
-#define LIBAVFILTER_VERSION_MINOR  14
+#define LIBAVFILTER_VERSION_MINOR  15
 #define LIBAVFILTER_VERSION_MICRO 100
 
 
-- 
2.42.0

___
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".


[FFmpeg-devel] [PATCH 16/25] avfilter/vf_format: allow empty pix_fmts list

2023-11-09 Thread Niklas Haas
From: Niklas Haas 

Which will impose no restriction. This makes sense when using e.g.
`color_ranges=pc` to limit the color range, without also limiting the
pixel format.
---
 libavfilter/vf_format.c | 9 ++---
 1 file changed, 2 insertions(+), 7 deletions(-)

diff --git a/libavfilter/vf_format.c b/libavfilter/vf_format.c
index d1bb9daa97..3a353bbb0d 100644
--- a/libavfilter/vf_format.c
+++ b/libavfilter/vf_format.c
@@ -91,11 +91,6 @@ static av_cold int init(AVFilterContext *ctx)
 enum AVPixelFormat pix_fmt;
 int ret;
 
-if (!s->pix_fmts) {
-av_log(ctx, AV_LOG_ERROR, "Empty output format string.\n");
-return AVERROR(EINVAL);
-}
-
 for (char *sep, *cur = s->pix_fmts; cur; cur = sep) {
 sep = strchr(cur, '|');
 if (sep && *sep)
@@ -131,7 +126,7 @@ static av_cold int init(AVFilterContext *ctx)
 }
 
 /* hold on to a ref for the lifetime of the filter */
-if ((ret = ff_formats_ref(s->formats, &s->formats)) < 0 ||
+if (s->formats  && (ret = ff_formats_ref(s->formats,  
&s->formats)) < 0 ||
 s->color_spaces && (ret = ff_formats_ref(s->color_spaces, 
&s->color_spaces)) < 0 ||
 s->color_ranges && (ret = ff_formats_ref(s->color_ranges, 
&s->color_ranges)) < 0)
 return ret;
@@ -144,7 +139,7 @@ static int query_formats(AVFilterContext *ctx)
 FormatContext *s = ctx->priv;
 int ret;
 
-if ((ret = ff_set_common_formats(ctx, s->formats)) < 0 ||
+if (s->formats  && (ret = ff_set_common_formats(ctx,  s->formats)) 
< 0 ||
 s->color_spaces && (ret = ff_set_common_color_spaces(ctx, 
s->color_spaces)) < 0 ||
 s->color_ranges && (ret = ff_set_common_color_ranges(ctx, 
s->color_ranges)) < 0)
 return ret;
-- 
2.42.0

___
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".


[FFmpeg-devel] [PATCH 15/25] avfilter/vf_format: add color_ranges/spaces

2023-11-09 Thread Niklas Haas
From: Niklas Haas 

Needed for fftools/ffmpeg_filter to be able to force specific output
formats via the filter chain.
---
 doc/filters.texi|  8 
 libavfilter/vf_format.c | 44 +
 2 files changed, 48 insertions(+), 4 deletions(-)

diff --git a/doc/filters.texi b/doc/filters.texi
index 55a333680c..4599d575a6 100644
--- a/doc/filters.texi
+++ b/doc/filters.texi
@@ -14241,6 +14241,14 @@ It accepts the following parameters:
 A '|'-separated list of pixel format names, such as
 "pix_fmts=yuv420p|monow|rgb24".
 
+@item color_spaces
+A '|'-separated list of color space names, such as
+"color_spaces=bt709|bt470bg|bt2020nc".
+
+@item color_ranges
+A '|'-separated list of color rangee names, such as
+"color_spaces=tv|pc".
+
 @end table
 
 @subsection Examples
diff --git a/libavfilter/vf_format.c b/libavfilter/vf_format.c
index b137e3075e..d1bb9daa97 100644
--- a/libavfilter/vf_format.c
+++ b/libavfilter/vf_format.c
@@ -40,18 +40,24 @@
 typedef struct FormatContext {
 const AVClass *class;
 char *pix_fmts;
+char *csps;
+char *ranges;
 
 AVFilterFormats *formats; ///< parsed from `pix_fmts`
+AVFilterFormats *color_spaces; ///< parsed from `csps`
+AVFilterFormats *color_ranges; ///< parsed from `ranges`
 } FormatContext;
 
 static av_cold void uninit(AVFilterContext *ctx)
 {
 FormatContext *s = ctx->priv;
 ff_formats_unref(&s->formats);
+ff_formats_unref(&s->color_spaces);
+ff_formats_unref(&s->color_ranges);
 }
 
 static av_cold int invert_formats(AVFilterFormats **fmts,
-   AVFilterFormats *allfmts)
+  AVFilterFormats *allfmts)
 {
 if (!allfmts)
 return AVERROR(ENOMEM);
@@ -99,13 +105,35 @@ static av_cold int init(AVFilterContext *ctx)
 return ret;
 }
 
+for (char *sep, *cur = s->csps; cur; cur = sep) {
+sep = strchr(cur, '|');
+if (sep && *sep)
+*sep++ = 0;
+if ((ret = av_color_space_from_name(cur)) < 0 ||
+(ret = ff_add_format(&s->color_spaces, ret)) < 0)
+return ret;
+}
+
+for (char *sep, *cur = s->ranges; cur; cur = sep) {
+sep = strchr(cur, '|');
+if (sep && *sep)
+*sep++ = 0;
+if ((ret = av_color_range_from_name(cur)) < 0 ||
+(ret = ff_add_format(&s->color_ranges, ret)) < 0)
+return ret;
+}
+
 if (!strcmp(ctx->filter->name, "noformat")) {
-if ((ret = invert_formats(&s->formats, 
ff_all_formats(AVMEDIA_TYPE_VIDEO))) < 0)
+if ((ret = invert_formats(&s->formats,  
ff_all_formats(AVMEDIA_TYPE_VIDEO))) < 0 ||
+(ret = invert_formats(&s->color_spaces, ff_all_color_spaces())) < 
0 ||
+(ret = invert_formats(&s->color_ranges, ff_all_color_ranges())) < 
0)
 return ret;
 }
 
 /* hold on to a ref for the lifetime of the filter */
-if ((ret = ff_formats_ref(s->formats, &s->formats)) < 0)
+if ((ret = ff_formats_ref(s->formats, &s->formats)) < 0 ||
+s->color_spaces && (ret = ff_formats_ref(s->color_spaces, 
&s->color_spaces)) < 0 ||
+s->color_ranges && (ret = ff_formats_ref(s->color_ranges, 
&s->color_ranges)) < 0)
 return ret;
 
 return 0;
@@ -114,14 +142,22 @@ static av_cold int init(AVFilterContext *ctx)
 static int query_formats(AVFilterContext *ctx)
 {
 FormatContext *s = ctx->priv;
+int ret;
+
+if ((ret = ff_set_common_formats(ctx, s->formats)) < 0 ||
+s->color_spaces && (ret = ff_set_common_color_spaces(ctx, 
s->color_spaces)) < 0 ||
+s->color_ranges && (ret = ff_set_common_color_ranges(ctx, 
s->color_ranges)) < 0)
+return ret;
 
-return ff_set_common_formats(ctx, s->formats);
+return 0;
 }
 
 
 #define OFFSET(x) offsetof(FormatContext, x)
 static const AVOption options[] = {
 { "pix_fmts", "A '|'-separated list of pixel formats", OFFSET(pix_fmts), 
AV_OPT_TYPE_STRING, .flags = AV_OPT_FLAG_VIDEO_PARAM | 
AV_OPT_FLAG_FILTERING_PARAM },
+{ "color_spaces", "A '|'-separated list of color spaces", OFFSET(csps), 
AV_OPT_TYPE_STRING, .flags = AV_OPT_FLAG_VIDEO_PARAM | 
AV_OPT_FLAG_FILTERING_PARAM },
+{ "color_ranges", "A '|'-separated list of color ranges", OFFSET(ranges), 
AV_OPT_TYPE_STRING, .flags = AV_OPT_FLAG_VIDEO_PARAM | 
AV_OPT_FLAG_FILTERING_PARAM },
 { NULL }
 };
 
-- 
2.42.0

___
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".


[FFmpeg-devel] [PATCH 19/25] (WIP) lavc: set color_ranges for MPEG-only codecs

2023-11-09 Thread Niklas Haas
From: Niklas Haas 

Mirroring the previous commit, all codecs which previously never
accepted YUVJ now need to be labelled as MPEG range only.

TODO:
- add the rest of the codecs
---
 libavcodec/mpeg4videoenc.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/libavcodec/mpeg4videoenc.c b/libavcodec/mpeg4videoenc.c
index d1e50612dd..bb98c84eab 100644
--- a/libavcodec/mpeg4videoenc.c
+++ b/libavcodec/mpeg4videoenc.c
@@ -1403,6 +1403,9 @@ const FFCodec ff_mpeg4_encoder = {
 FF_CODEC_ENCODE_CB(ff_mpv_encode_picture),
 .close  = ff_mpv_encode_end,
 .p.pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV420P, 
AV_PIX_FMT_NONE },
+.p.color_ranges = (const enum AVColorRange[]) {
+AVCOL_RANGE_MPEG, AVCOL_RANGE_UNSPECIFIED
+},
 .p.capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_SLICE_THREADS |
   AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
 .caps_internal  = FF_CODEC_CAP_INIT_CLEANUP,
-- 
2.42.0

___
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".


[FFmpeg-devel] [PATCH 17/25] avcodec: add YUV color space metadata to AVCodec

2023-11-09 Thread Niklas Haas
From: Niklas Haas 

This is motivated primarily by a desire for YUVJ removal, which will
require signalling the supported color ranges as part of the codec
capabilities. But since we're adding YUV range, we might as well add the
YUV color matrix as well - since some codecs (e.g. VP8, JPEG) only
support certain values.

I decided to preserve the ambiguous and misleading "color_spaces" name,
for symmetry with AVFrame.colorspace. (Though this would IMO be better
called "color_matrix" or "color_system")

I also decided to omit the other AVColor* fields for now, because
vf_scale cannot handle auto-conversion between primaries/transfer/etc.
There is little value in adding metadata we cannot do anything with, and
no harm in extending the API again in the future. In theory, vf_scale
can handle conversion between chroma locations, but also the signalling
for this is annoying, so I'll defer it to a future commit.
---
 doc/APIchanges   | 3 +++
 libavcodec/codec.h   | 6 ++
 libavcodec/version.h | 2 +-
 3 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/doc/APIchanges b/doc/APIchanges
index 97b6de8276..87f4368e03 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -2,6 +2,9 @@ The last version increases of all libraries were on 2023-02-09
 
 API changes, most recent first:
 
+2023-11-xx - xx - lavc 60.34.100 - avcodec.h
+  Add AVCodec.color_ranges and AVCodec.color_spaces.
+
 2023-11-xx - xx - lavf 58.15.100 - buffersink.h
   Add av_buffersink_get_colorspace and av_buffersink_get_color_range.
 
diff --git a/libavcodec/codec.h b/libavcodec/codec.h
index 8034f1a53c..8bd678de7a 100644
--- a/libavcodec/codec.h
+++ b/libavcodec/codec.h
@@ -235,6 +235,12 @@ typedef struct AVCodec {
  * Array of supported channel layouts, terminated with a zeroed layout.
  */
 const AVChannelLayout *ch_layouts;
+
+/**
+ * Array of supported YUV color formats. Ignored for RGB/Gray formats.
+ */
+const enum AVColorRange *color_ranges; ///< terminated by 
AVCOL_RANGE_UNSPECIFIED
+const enum AVColorSpace *color_spaces; ///< terminated by 
AVCOL_SPC_UNSPECIFIED
 } AVCodec;
 
 /**
diff --git a/libavcodec/version.h b/libavcodec/version.h
index 2a08e42d7e..0ef6c991f3 100644
--- a/libavcodec/version.h
+++ b/libavcodec/version.h
@@ -29,7 +29,7 @@
 
 #include "version_major.h"
 
-#define LIBAVCODEC_VERSION_MINOR  33
+#define LIBAVCODEC_VERSION_MINOR  34
 #define LIBAVCODEC_VERSION_MICRO 100
 
 #define LIBAVCODEC_VERSION_INT  AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
-- 
2.42.0

___
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".


[FFmpeg-devel] [PATCH 18/25] lavc: set color_ranges for YUVJ-only codecs

2023-11-09 Thread Niklas Haas
From: Niklas Haas 

Only affects amv and roqvideo. (mjpeg is handled separately by fftools)
---
 libavcodec/mjpegenc.c| 3 +++
 libavcodec/roqvideoenc.c | 2 ++
 2 files changed, 5 insertions(+)

diff --git a/libavcodec/mjpegenc.c b/libavcodec/mjpegenc.c
index 508772987f..c827a47e59 100644
--- a/libavcodec/mjpegenc.c
+++ b/libavcodec/mjpegenc.c
@@ -685,6 +685,9 @@ const FFCodec ff_amv_encoder = {
 .p.pix_fmts = (const enum AVPixelFormat[]) {
 AV_PIX_FMT_YUVJ420P, AV_PIX_FMT_NONE
 },
+.p.color_ranges = (const enum AVColorRange[]) {
+AVCOL_RANGE_JPEG, AVCOL_RANGE_UNSPECIFIED
+},
 .p.priv_class   = &amv_class,
 .p.capabilities = AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,
 };
diff --git a/libavcodec/roqvideoenc.c b/libavcodec/roqvideoenc.c
index 0933abf4f9..b584ee1142 100644
--- a/libavcodec/roqvideoenc.c
+++ b/libavcodec/roqvideoenc.c
@@ -1127,6 +1127,8 @@ const FFCodec ff_roq_encoder = {
 .close= roq_encode_end,
 .p.pix_fmts   = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUVJ444P,
 AV_PIX_FMT_NONE },
+.p.color_ranges   = (const enum AVColorRange[]){ AVCOL_RANGE_JPEG,
+
AVCOL_RANGE_UNSPECIFIED },
 .p.priv_class   = &roq_class,
 .caps_internal= FF_CODEC_CAP_INIT_CLEANUP,
 };
-- 
2.42.0

___
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".


[FFmpeg-devel] [PATCH 20/25] fftools/ffmpeg_filter: simplify choose_pix_fmts

2023-11-09 Thread Niklas Haas
From: Niklas Haas 

The only meaningful difference between choose_pix_fmts and the default
code was the inclusion of an extra branch for `keep_pix_fmt` being true.

However, in this case, we either:
1. Force the specific `ofp->format` that we inherited from
   ofilter_bind_ost, or if no format was set:
2. Print an empty format list

Both of these goals can be accomplished by simply moving the decision
logic to ofilter_bind_ost, to avoid setting any format list when
keep_pix_fmt is enabled. This is arguably cleaner as it moves format
selection logic to a single function. In the case of branch 1, nothing
else needs to be done as we already force the format provided in
ofp->format, if any is set. Add an assertion to verify this assumption
just in case.

(Side note: The "choose_*" family of functions are arguably misnomers,
as they should really be called "print_*" - their current behavior is to
print the relevant format lists to the `vf/af_format` filter arguments)
---
 fftools/ffmpeg_filter.c | 49 -
 1 file changed, 9 insertions(+), 40 deletions(-)

diff --git a/fftools/ffmpeg_filter.c b/fftools/ffmpeg_filter.c
index dd5cfe4481..5b99c4ba40 100644
--- a/fftools/ffmpeg_filter.c
+++ b/fftools/ffmpeg_filter.c
@@ -313,36 +313,6 @@ static void sub2video_update(InputFilterPriv *ifp, int64_t 
heartbeat_pts,
 ifp->sub2video.initialize = 0;
 }
 
-/* *dst may return be set to NULL (no pixel format found), a static string or a
- * string backed by the bprint. Nothing has been written to the AVBPrint in 
case
- * NULL is returned. The AVBPrint provided should be clean. */
-static int choose_pix_fmts(OutputFilter *ofilter, AVBPrint *bprint,
-   const char **dst)
-{
-OutputFilterPriv *ofp = ofp_from_ofilter(ofilter);
-OutputStream *ost = ofilter->ost;
-
-*dst = NULL;
-
-if (ost->keep_pix_fmt || ofp->format != AV_PIX_FMT_NONE) {
-*dst = ofp->format == AV_PIX_FMT_NONE ? NULL :
-   av_get_pix_fmt_name(ofp->format);
-} else if (ofp->formats) {
-const enum AVPixelFormat *p = ofp->formats;
-
-for (; *p != AV_PIX_FMT_NONE; p++) {
-const char *name = av_get_pix_fmt_name(*p);
-av_bprintf(bprint, "%s%c", name, p[1] == AV_PIX_FMT_NONE ? '\0' : 
'|');
-}
-if (!av_bprint_is_complete(bprint))
-return AVERROR(ENOMEM);
-
-*dst = bprint->str;
-}
-
-return 0;
-}
-
 /* Define a function for appending a list of allowed formats
  * to an AVBPrint. If nonempty, the list will have a header. */
 #define DEF_CHOOSE_FORMAT(name, type, var, supported_list, none, 
printf_format, get_name) \
@@ -365,8 +335,8 @@ static void choose_ ## name (OutputFilterPriv *ofp, 
AVBPrint *bprint)  \
 av_bprint_chars(bprint, ':', 1);   
\
 }
 
-//DEF_CHOOSE_FORMAT(pix_fmts, enum AVPixelFormat, format, formats, 
AV_PIX_FMT_NONE,
-//  GET_PIX_FMT_NAME)
+DEF_CHOOSE_FORMAT(pix_fmts, enum AVPixelFormat, format, formats,
+  AV_PIX_FMT_NONE, "%s", av_get_pix_fmt_name)
 
 DEF_CHOOSE_FORMAT(sample_fmts, enum AVSampleFormat, format, formats,
   AV_SAMPLE_FMT_NONE, "%s", av_get_sample_fmt_name)
@@ -690,7 +660,7 @@ int ofilter_bind_ost(OutputFilter *ofilter, OutputStream 
*ost)
 ofp->height = ost->enc_ctx->height;
 if (ost->enc_ctx->pix_fmt != AV_PIX_FMT_NONE) {
 ofp->format = ost->enc_ctx->pix_fmt;
-} else {
+} else if (!ost->keep_pix_fmt) {
 ofp->formats = c->pix_fmts;
 
 // MJPEG encoder exports a full list of supported pixel formats,
@@ -1169,7 +1139,6 @@ static int configure_output_video_filter(FilterGraph *fg, 
OutputFilter *ofilter,
 AVBPrint bprint;
 int pad_idx = out->pad_idx;
 int ret;
-const char *pix_fmts;
 char name[255];
 
 snprintf(name, sizeof(name), "out_%d_%d", ost->file_index, ost->index);
@@ -1204,17 +1173,17 @@ static int configure_output_video_filter(FilterGraph 
*fg, OutputFilter *ofilter,
 pad_idx = 0;
 }
 
+av_assert0(!ost->keep_pix_fmt || (!ofp->format && !ofp->formats));
 av_bprint_init(&bprint, 0, AV_BPRINT_SIZE_UNLIMITED);
-ret = choose_pix_fmts(ofilter, &bprint, &pix_fmts);
-if (ret < 0)
-return ret;
-
-if (pix_fmts) {
+choose_pix_fmts(ofp, &bprint);
+if (!av_bprint_is_complete(&bprint))
+return AVERROR(ENOMEM);
+if (bprint.len) {
 AVFilterContext *filter;
 
 ret = avfilter_graph_create_filter(&filter,
avfilter_get_by_name("format"),
-   "format", pix_fmts, NULL, 
fg->graph);
+   "format", bprint.str, NULL, 
fg->graph);
 av_bprint_finalize(&bprint, NULL);
 if (ret < 0)
 return ret;
-- 
2.42.0

___
ffmpe

[FFmpeg-devel] [PATCH 21/25] fftools/ffmpeg_filter: propagate codec yuv metadata to filters

2023-11-09 Thread Niklas Haas
From: Niklas Haas 

To convert between color spaces/ranges, if needed by the codec
properties. We momentarily duplicate the mjpeg strictness logic to also
enfoce full range. This duplication will be cleaned up in an upcoming
commit.

Due to avcodec_open2 being called after ofilter_bind_ost, we need to
look up the eventual encoder options from the options dictionary
directly, following the same design as the "strict" option.
---
 fftools/ffmpeg_filter.c | 55 +
 1 file changed, 55 insertions(+)

diff --git a/fftools/ffmpeg_filter.c b/fftools/ffmpeg_filter.c
index 5b99c4ba40..da770ef650 100644
--- a/fftools/ffmpeg_filter.c
+++ b/fftools/ffmpeg_filter.c
@@ -173,6 +173,8 @@ typedef struct OutputFilterPriv {
 int width, height;
 int sample_rate;
 AVChannelLayout ch_layout;
+enum AVColorSpace color_space;
+enum AVColorRange color_range;
 
 // time base in which the output is sent to our downstream
 // does not need to match the filtersink's timebase
@@ -188,6 +190,8 @@ typedef struct OutputFilterPriv {
 const int *formats;
 const AVChannelLayout *ch_layouts;
 const int *sample_rates;
+const enum AVColorSpace *color_spaces;
+const enum AVColorRange *color_ranges;
 
 AVRational enc_timebase;
 // offset for output timestamps, in AV_TIME_BASE_Q
@@ -344,6 +348,12 @@ DEF_CHOOSE_FORMAT(sample_fmts, enum AVSampleFormat, 
format, formats,
 DEF_CHOOSE_FORMAT(sample_rates, int, sample_rate, sample_rates, 0,
   "%d", )
 
+DEF_CHOOSE_FORMAT(color_spaces, enum AVColorSpace, color_space, color_spaces,
+  AVCOL_SPC_UNSPECIFIED, "%s", av_color_space_name);
+
+DEF_CHOOSE_FORMAT(color_ranges, enum AVColorRange, color_range, color_ranges,
+  AVCOL_RANGE_UNSPECIFIED, "%s", av_color_range_name);
+
 static void choose_channel_layouts(OutputFilterPriv *ofp, AVBPrint *bprint)
 {
 if (av_channel_layout_check(&ofp->ch_layout)) {
@@ -570,6 +580,8 @@ static OutputFilter *ofilter_alloc(FilterGraph *fg)
 ofilter   = &ofp->ofilter;
 ofilter->graph= fg;
 ofp->format   = -1;
+ofp->color_space  = AVCOL_SPC_UNSPECIFIED;
+ofp->color_range  = AVCOL_RANGE_UNSPECIFIED;
 ofilter->last_pts = AV_NOPTS_VALUE;
 
 return ofilter;
@@ -638,6 +650,17 @@ static int set_channel_layout(OutputFilterPriv *f, 
OutputStream *ost)
 return 0;
 }
 
+static int ost_opt_int(OutputStream *ost, const char *name, int defval)
+{
+const AVDictionaryEntry *e = av_dict_get(ost->encoder_opts, name, NULL, 0);
+if (e) {
+const AVOption *o = av_opt_find(ost->enc_ctx, e->key, NULL, 0, 0);
+av_assert0(o);
+av_opt_eval_int(ost->enc_ctx, o, e->value, &defval);
+}
+return defval;
+}
+
 int ofilter_bind_ost(OutputFilter *ofilter, OutputStream *ost)
 {
 const OutputFile  *of = output_files[ost->file_index];
@@ -645,6 +668,8 @@ int ofilter_bind_ost(OutputFilter *ofilter, OutputStream 
*ost)
 FilterGraph  *fg = ofilter->graph;
 FilterGraphPriv *fgp = fgp_from_fg(fg);
 const AVCodec *c = ost->enc_ctx->codec;
+enum AVColorSpace color_space;
+enum AVColorRange color_range;
 
 av_assert0(!ofilter->ost);
 
@@ -658,6 +683,8 @@ int ofilter_bind_ost(OutputFilter *ofilter, OutputStream 
*ost)
 case AVMEDIA_TYPE_VIDEO:
 ofp->width  = ost->enc_ctx->width;
 ofp->height = ost->enc_ctx->height;
+color_space = ost_opt_int(ost, "color_space", 
ost->enc_ctx->colorspace);
+color_range = ost_opt_int(ost, "color_range", 
ost->enc_ctx->color_range);
 if (ost->enc_ctx->pix_fmt != AV_PIX_FMT_NONE) {
 ofp->format = ost->enc_ctx->pix_fmt;
 } else if (!ost->keep_pix_fmt) {
@@ -687,6 +714,30 @@ int ofilter_bind_ost(OutputFilter *ofilter, OutputStream 
*ost)
 ofp->formats = mjpeg_formats;
 }
 }
+if (color_space != AVCOL_SPC_UNSPECIFIED) {
+ofp->color_space = color_space;
+} else {
+ofp->color_spaces = c->color_spaces;
+}
+if (color_range != AVCOL_RANGE_UNSPECIFIED) {
+ofp->color_range = color_range;
+} else {
+ofp->color_ranges = c->color_ranges;
+
+// MJPEG encoder exports a full list of supported pixel formats,
+// but the full-range ones are experimental-only.
+// Restrict the auto-conversion list unless -strict experimental
+// has been specified.
+if (!strcmp(c->name, "mjpeg")) {
+static const enum AVColorRange mjpeg_ranges[] =
+{ AVCOL_RANGE_JPEG, AVCOL_RANGE_UNSPECIFIED };
+
+int strict_val = ost->enc_ctx->strict_std_compliance;
+strict_val = ost_opt_int(ost, "strict", strict_val);
+if (strict_val > FF_COMPLIANCE_UNOFFICIAL)
+ofp->color_ranges = mjpeg_ranges;
+}
+}
 
  

[FFmpeg-devel] [PATCH 22/25] tests/fate: force MPEG range for rawvideo tests

2023-11-09 Thread Niklas Haas
From: Niklas Haas 

The input file is MPEG range, so we should also encode to MPEG range
before comparing against it. This bug was avoided in the past because
JPEG range YUV inputs were tagged as YUVJ, which resulted in an
automatic conversion to PC range by default.

After YUVJ removal, we will need to explicitly specify that we want MPEG
range, since rawvideo does not care (or signal) if the output is JPEG or
MPEG range.

Affects both vsynth and owdenoise.
---
 tests/fate/filter-video.mak | 2 +-
 tests/fate/vcodec.mak   | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/tests/fate/filter-video.mak b/tests/fate/filter-video.mak
index 58edc70f46..2a9c5c682e 100644
--- a/tests/fate/filter-video.mak
+++ b/tests/fate/filter-video.mak
@@ -2,7 +2,7 @@
 VIDEO_FILTER = $(call ALLYES, $(1:%=%_FILTER) $(2) FILE_PROTOCOL 
IMAGE2_DEMUXER PGMYUV_DECODER RAWVIDEO_ENCODER NUT_MUXER MD5_PROTOCOL)
 
 FATE_FILTER_SAMPLES-$(call FILTERDEMDECENCMUX, PERMS OWDENOISE TRIM SCALE, 
SMJPEG, MJPEG, RAWVIDEO, RAWVIDEO, PIPE_PROTOCOL) += 
fate-filter-owdenoise-sample
-fate-filter-owdenoise-sample: CMD = ffmpeg -auto_conversion_filters -idct 
simple -i $(TARGET_SAMPLES)/smjpeg/scenwin.mjpg -vf 
"trim=duration=0.5,perms=random,owdenoise=10:20:20:enable=not(between(t\,0.2\,1.2))"
 -an -f rawvideo -
+fate-filter-owdenoise-sample: CMD = ffmpeg -auto_conversion_filters -idct 
simple -i $(TARGET_SAMPLES)/smjpeg/scenwin.mjpg -vf 
"trim=duration=0.5,perms=random,owdenoise=10:20:20:enable=not(between(t\,0.2\,1.2))"
 -an -f rawvideo -color_range mpeg -
 fate-filter-owdenoise-sample: REF = 
$(SAMPLES)/filter-reference/owdenoise-scenwin.raw
 fate-filter-owdenoise-sample: CMP_TARGET = 1
 fate-filter-owdenoise-sample: FUZZ = 3539
diff --git a/tests/fate/vcodec.mak b/tests/fate/vcodec.mak
index 45ed88da96..e3205127ff 100644
--- a/tests/fate/vcodec.mak
+++ b/tests/fate/vcodec.mak
@@ -6,7 +6,7 @@ fate-vsynth%: CODEC = $(word 3, $(subst -, ,$(@)))
 fate-vsynth%: FMT = avi
 fate-vsynth%: DEFAULT_SIZE = -s 352x288
 fate-vsynth3-%: DEFAULT_SIZE = -s $(FATEW)x$(FATEH)
-fate-vsynth%: CMD = enc_dec "rawvideo $(DEFAULT_SIZE) -pix_fmt yuv420p 
$(RAWDECOPTS)" $(SRC) $(FMT) "-c $(CODEC) $(ENCOPTS)" rawvideo "-pix_fmt 
yuv420p -vsync passthrough $(DECOPTS)" "" "" ${TWOPASS}
+fate-vsynth%: CMD = enc_dec "rawvideo $(DEFAULT_SIZE) -color_range mpeg 
-pix_fmt yuv420p $(RAWDECOPTS)" $(SRC) $(FMT) "-c $(CODEC) $(ENCOPTS)" rawvideo 
"-pix_fmt yuv420p -color_range mpeg -vsync passthrough $(DECOPTS)" "" "" 
${TWOPASS}
 fate-vsynth%: CMP_UNIT = 1
 fate-vsynth%: REF = $(SRC_PATH)/tests/ref/vsynth/$(@:fate-%=%)
 
-- 
2.42.0

___
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".


[FFmpeg-devel] [PATCH 24/25] avutil/pixdesc: remove old yuvj pixel format check

2023-11-09 Thread Niklas Haas
From: Niklas Haas 

These no longer exist.
---
 libavutil/pixdesc.c | 14 +-
 1 file changed, 1 insertion(+), 13 deletions(-)

diff --git a/libavutil/pixdesc.c b/libavutil/pixdesc.c
index 2886c9e0f5..9244b9d7a8 100644
--- a/libavutil/pixdesc.c
+++ b/libavutil/pixdesc.c
@@ -2977,8 +2977,7 @@ enum AVPixelFormat av_pix_fmt_swap_endianness(enum 
AVPixelFormat pix_fmt)
 #define FF_COLOR_NA  -1
 #define FF_COLOR_RGB  0 /**< RGB color space */
 #define FF_COLOR_GRAY 1 /**< gray color space */
-#define FF_COLOR_YUV  2 /**< YUV color space. 16 <= Y <= 235, 16 <= U, V 
<= 240 */
-#define FF_COLOR_YUV_JPEG 3 /**< YUV color space. 0 <= Y <= 255, 0 <= U, V <= 
255 */
+#define FF_COLOR_YUV  2 /**< YUV color space */
 #define FF_COLOR_XYZ  4
 
 #define pixdesc_has_alpha(pixdesc) \
@@ -2992,11 +2991,6 @@ static int get_color_type(const AVPixFmtDescriptor 
*desc) {
 if(desc->nb_components == 1 || desc->nb_components == 2)
 return FF_COLOR_GRAY;
 
-if (desc->name) {
-if (av_strstart(desc->name, "yuvj", NULL))
-return FF_COLOR_YUV_JPEG;
-}
-
 if(desc->flags & AV_PIX_FMT_FLAG_RGB)
 return FF_COLOR_RGB;
 
@@ -3135,12 +3129,6 @@ static int get_pix_fmt_score(enum AVPixelFormat 
dst_pix_fmt,
 if (src_color != FF_COLOR_YUV)
 loss |= FF_LOSS_COLORSPACE;
 break;
-case FF_COLOR_YUV_JPEG:
-if (src_color != FF_COLOR_YUV_JPEG &&
-src_color != FF_COLOR_YUV &&
-src_color != FF_COLOR_GRAY)
-loss |= FF_LOSS_COLORSPACE;
-break;
 default:
 /* fail safe test */
 if (src_color != dst_color)
-- 
2.42.0

___
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".


[FFmpeg-devel] [PATCH 25/25] avcodec/encode: enforce AVCodec capabilities at encode time

2023-11-09 Thread Niklas Haas
From: Niklas Haas 

In general, the logic is always the same: if the codec supports only a
single format, enforce it if possible. Otherwise, throw an error when
an incompatible format is thrown.

To preserve backwards compatibility and make this check less pedantic
than it needs to be, always consider 'AVCOL_*_UNSPECIFIED' a valid
value. That way, we will only throw an error if the user explicitly set
a color value that we explicitly know is unsupported.
---
 libavcodec/encode.c | 39 +++
 1 file changed, 39 insertions(+)

diff --git a/libavcodec/encode.c b/libavcodec/encode.c
index 31565638fa..73c3c4cd41 100644
--- a/libavcodec/encode.c
+++ b/libavcodec/encode.c
@@ -605,6 +605,45 @@ static int encode_preinit_video(AVCodecContext *avctx)
 }
 }
 
+if (avctx->colorspace != AVCOL_SPC_UNSPECIFIED && c->color_spaces) {
+for (i = 0; c->color_spaces[i] != AVCOL_SPC_UNSPECIFIED; i++)
+if (avctx->colorspace == c->color_spaces[i])
+break;
+if (c->color_spaces[i] == AVCOL_SPC_UNSPECIFIED) {
+av_log(avctx, AV_LOG_ERROR,
+   "Specified color space %s is not supported by the %s 
encoder.\n",
+   av_color_space_name(avctx->colorspace), c->name);
+av_log(avctx, AV_LOG_ERROR, "Supported color spaces:\n");
+for (int p = 0; c->color_spaces[p] != AVCOL_SPC_UNSPECIFIED; p++) {
+av_log(avctx, AV_LOG_ERROR, "  %s\n",
+   av_color_space_name(c->color_spaces[p]));
+}
+return AVERROR(EINVAL);
+}
+}
+
+if (avctx->color_range != AVCOL_RANGE_UNSPECIFIED && c->color_ranges) {
+for (i = 0; c->color_ranges[i] != AVCOL_RANGE_UNSPECIFIED; i++) {
+if (avctx->color_range == c->color_ranges[i])
+break;
+}
+if (c->color_ranges[i] == AVCOL_RANGE_UNSPECIFIED) {
+if (i == 1 && !avctx->color_range) {
+avctx->color_range = c->color_ranges[0];
+} else if (avctx->color_range) {
+av_log(avctx, AV_LOG_ERROR,
+   "Specified color range %s is not supported by the %s 
encoder.\n",
+   av_color_range_name(avctx->color_range), c->name);
+av_log(avctx, AV_LOG_ERROR, "Supported color ranges:\n");
+for (int p = 0; c->color_ranges[p] != AVCOL_RANGE_UNSPECIFIED; 
p++) {
+av_log(avctx, AV_LOG_ERROR, "  %s\n",
+   av_color_range_name(c->color_ranges[p]));
+}
+return AVERROR(EINVAL);
+}
+}
+}
+
 if (avctx->bits_per_raw_sample < 0
 || (avctx->bits_per_raw_sample > 8 && pixdesc->comp[0].depth <= 8)) {
 av_log(avctx, AV_LOG_WARNING, "Specified bit depth %d not possible 
with the specified pixel formats depth %d\n",
-- 
2.42.0

___
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".


[FFmpeg-devel] [PATCH 06/25] fftools/ffmpeg_filter: configure buffersrc with csp/range

2023-11-09 Thread Niklas Haas
From: Niklas Haas 

Propagates input metadata to the input filter graph.
---
 fftools/ffmpeg_filter.c | 24 +---
 1 file changed, 21 insertions(+), 3 deletions(-)

diff --git a/fftools/ffmpeg_filter.c b/fftools/ffmpeg_filter.c
index e699798897..dd5cfe4481 100644
--- a/fftools/ffmpeg_filter.c
+++ b/fftools/ffmpeg_filter.c
@@ -98,6 +98,8 @@ typedef struct InputFilterPriv {
 
 int width, height;
 AVRational sample_aspect_ratio;
+enum AVColorSpace color_space;
+enum AVColorRange color_range;
 
 int sample_rate;
 AVChannelLayout ch_layout;
@@ -118,6 +120,8 @@ typedef struct InputFilterPriv {
 int width;
 int height;
 AVRational  sample_aspect_ratio;
+enum AVColorSpace   color_space;
+enum AVColorRange   color_range;
 
 int sample_rate;
 AVChannelLayout ch_layout;
@@ -212,6 +216,8 @@ static int sub2video_get_blank_frame(InputFilterPriv *ifp)
 frame->width  = ifp->width;
 frame->height = ifp->height;
 frame->format = ifp->format;
+frame->colorspace = ifp->color_space;
+frame->color_range = ifp->color_range;
 
 ret = av_frame_get_buffer(frame, 0);
 if (ret < 0)
@@ -789,6 +795,8 @@ static InputFilter *ifilter_alloc(FilterGraph *fg)
 
 ifp->format  = -1;
 ifp->fallback.format = -1;
+ifp->color_space = ifp->fallback.color_space = AVCOL_SPC_UNSPECIFIED;
+ifp->color_range = ifp->fallback.color_range = AVCOL_RANGE_UNSPECIFIED;
 
 ifp->frame_queue = av_fifo_alloc2(8, sizeof(AVFrame*), 
AV_FIFO_FLAG_AUTO_GROW);
 if (!ifp->frame_queue)
@@ -1424,9 +1432,11 @@ static int configure_input_video_filter(FilterGraph *fg, 
InputFilter *ifilter,
 av_bprint_init(&args, 0, AV_BPRINT_SIZE_AUTOMATIC);
 av_bprintf(&args,
  "video_size=%dx%d:pix_fmt=%d:time_base=%d/%d:"
- "pixel_aspect=%d/%d",
+ "pixel_aspect=%d/%d:colorspace=%s:range=%s",
  ifp->width, ifp->height, ifp->format,
- ifp->time_base.num, ifp->time_base.den, sar.num, sar.den);
+ ifp->time_base.num, ifp->time_base.den, sar.num, sar.den,
+ av_color_space_name(ifp->color_space),
+ av_color_range_name(ifp->color_range));
 if (fr.num && fr.den)
 av_bprintf(&args, ":frame_rate=%d/%d", fr.num, fr.den);
 snprintf(name, sizeof(name), "graph %d input from stream %d:%d", fg->index,
@@ -1760,6 +1770,8 @@ int ifilter_parameters_from_dec(InputFilter *ifilter, 
const AVCodecContext *dec)
 ifp->fallback.width  = dec->width;
 ifp->fallback.height = dec->height;
 ifp->fallback.sample_aspect_ratio= dec->sample_aspect_ratio;
+ifp->fallback.color_space= dec->colorspace;
+ifp->fallback.color_range= dec->color_range;
 } else if (dec->codec_type == AVMEDIA_TYPE_AUDIO) {
 int ret;
 
@@ -1800,6 +1812,8 @@ static int ifilter_parameters_from_frame(InputFilter 
*ifilter, const AVFrame *fr
 ifp->width   = frame->width;
 ifp->height  = frame->height;
 ifp->sample_aspect_ratio = frame->sample_aspect_ratio;
+ifp->color_space = frame->colorspace;
+ifp->color_range = frame->color_range;
 
 ifp->sample_rate = frame->sample_rate;
 ret = av_channel_layout_copy(&ifp->ch_layout, &frame->ch_layout);
@@ -2331,6 +2345,8 @@ int ifilter_send_eof(InputFilter *ifilter, int64_t pts, 
AVRational tb)
 ifp->width  = ifp->fallback.width;
 ifp->height = ifp->fallback.height;
 ifp->sample_aspect_ratio= ifp->fallback.sample_aspect_ratio;
+ifp->color_space= ifp->fallback.color_space;
+ifp->color_range= ifp->fallback.color_range;
 
 ret = av_channel_layout_copy(&ifp->ch_layout,
  &ifp->fallback.ch_layout);
@@ -2374,7 +2390,9 @@ int ifilter_send_frame(InputFilter *ifilter, AVFrame 
*frame, int keep_reference)
 break;
 case AVMEDIA_TYPE_VIDEO:
 need_reinit |= ifp->width  != frame->width ||
-   ifp->height != frame->height;
+   ifp->height != frame->height ||
+   ifp->color_space != frame->colorspace ||
+   ifp->color_range != frame->color_range;
 break;
 }
 
-- 
2.42.0

___
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".


[FFmpeg-devel] [PATCH 05/25] avfilter/buffersrc: add color_space/range parameters

2023-11-09 Thread Niklas Haas
From: Niklas Haas 

To allow adding proper negotiation, in particular, to fftools.

These values will simply be negotiated downstream for YUV formats, and
ignored otherwise.
---
 doc/filters.texi| 10 +++
 libavfilter/buffersrc.c | 62 -
 libavfilter/buffersrc.h |  6 
 3 files changed, 71 insertions(+), 7 deletions(-)

diff --git a/doc/filters.texi b/doc/filters.texi
index 12113d7802..55a333680c 100644
--- a/doc/filters.texi
+++ b/doc/filters.texi
@@ -27939,6 +27939,16 @@ Specify the timebase assumed by the timestamps of the 
buffered frames.
 @item frame_rate
 Specify the frame rate expected for the video stream.
 
+@item colorspace
+A string representing the color space of the buffered video frames.
+It may be a number corresponding to a color space, or a color space
+name.
+
+@item range
+A string representing the color range of the buffered video frames.
+It may be a number corresponding to a color range, or a color range
+name.
+
 @item pixel_aspect, sar
 The sample (pixel) aspect ratio of the input video.
 
diff --git a/libavfilter/buffersrc.c b/libavfilter/buffersrc.c
index 453fc0fd5c..76f3f1d7a5 100644
--- a/libavfilter/buffersrc.c
+++ b/libavfilter/buffersrc.c
@@ -49,6 +49,8 @@ typedef struct BufferSourceContext {
 /* video only */
 int   w, h;
 enum AVPixelFormat  pix_fmt;
+enum AVColorSpace color_space;
+enum AVColorRange color_range;
 AVRationalpixel_aspect;
 
 AVBufferRef *hw_frames_ctx;
@@ -64,10 +66,13 @@ typedef struct BufferSourceContext {
 int64_t last_pts;
 } BufferSourceContext;
 
-#define CHECK_VIDEO_PARAM_CHANGE(s, c, width, height, format, pts)\
-if (c->w != width || c->h != height || c->pix_fmt != format) {\
-av_log(s, AV_LOG_INFO, "filter context - w: %d h: %d fmt: %d, incoming 
frame - w: %d h: %d fmt: %d pts_time: %s\n",\
-   c->w, c->h, c->pix_fmt, width, height, format, 
av_ts2timestr(pts, &s->outputs[0]->time_base));\
+#define CHECK_VIDEO_PARAM_CHANGE(s, c, width, height, format, csp, range, pts)\
+if (c->w != width || c->h != height || c->pix_fmt != format ||\
+c->color_space != csp || c->color_range != range) {\
+av_log(s, AV_LOG_INFO, "filter context - w: %d h: %d fmt: %d csp: %s 
range: %s, incoming frame - w: %d h: %d fmt: %d csp: %s range: %s pts_time: 
%s\n",\
+   c->w, c->h, c->pix_fmt, av_color_space_name(c->color_space), 
av_color_range_name(c->color_range),\
+   width, height, format, av_color_space_name(csp), 
av_color_range_name(range),\
+   av_ts2timestr(pts, &s->outputs[0]->time_base));\
 av_log(s, AV_LOG_WARNING, "Changing video frame properties on the fly 
is not supported by all filters.\n");\
 }
 
@@ -88,6 +93,8 @@ AVBufferSrcParameters *av_buffersrc_parameters_alloc(void)
 return NULL;
 
 par->format = -1;
+par->color_range = AVCOL_RANGE_UNSPECIFIED;
+par->color_space = AVCOL_SPC_UNSPECIFIED;
 
 return par;
 }
@@ -118,6 +125,10 @@ int av_buffersrc_parameters_set(AVFilterContext *ctx, 
AVBufferSrcParameters *par
 if (!s->hw_frames_ctx)
 return AVERROR(ENOMEM);
 }
+if (param->color_space != AVCOL_SPC_UNSPECIFIED)
+s->color_space = param->color_space;
+if (param->color_range != AVCOL_RANGE_UNSPECIFIED)
+s->color_range = param->color_range;
 break;
 case AVMEDIA_TYPE_AUDIO:
 if (param->format != AV_SAMPLE_FMT_NONE) {
@@ -205,7 +216,8 @@ FF_ENABLE_DEPRECATION_WARNINGS
 switch (ctx->outputs[0]->type) {
 case AVMEDIA_TYPE_VIDEO:
 CHECK_VIDEO_PARAM_CHANGE(ctx, s, frame->width, frame->height,
- frame->format, frame->pts);
+ frame->format, frame->colorspace,
+ frame->color_range, frame->pts);
 break;
 case AVMEDIA_TYPE_AUDIO:
 /* For layouts unknown on input but known on link after 
negotiation. */
@@ -302,10 +314,11 @@ static av_cold int init_video(AVFilterContext *ctx)
 return AVERROR(EINVAL);
 }
 
-av_log(ctx, AV_LOG_VERBOSE, "w:%d h:%d pixfmt:%s tb:%d/%d fr:%d/%d 
sar:%d/%d\n",
+av_log(ctx, AV_LOG_VERBOSE, "w:%d h:%d pixfmt:%s tb:%d/%d fr:%d/%d 
sar:%d/%d csp:%s range:%s\n",
c->w, c->h, av_get_pix_fmt_name(c->pix_fmt),
c->time_base.num, c->time_base.den, c->frame_rate.num, 
c->frame_rate.den,
-   c->pixel_aspect.num, c->pixel_aspect.den);
+   c->pixel_aspect.num, c->pixel_aspect.den,
+   av_color_space_name(c->color_space), 
av_color_range_name(c->color_range));
 
 return 0;
 }
@@ -328,6 +341,30 @@ static const AVOption buffer_options[] = {
 { "pixel_aspect",  "sample aspect ratio",OFFSET(pixel_aspect), 
AV_OPT_TYPE_RATIONAL, { .dbl = 0 }, 0, DBL_MAX, V },
 { "time_base", NULL,   

[FFmpeg-devel] [PATCH 08/25] avfilter/vf_scale: remove YCgCo check

2023-11-09 Thread Niklas Haas
From: Niklas Haas 

This is never avertised as supported to upstream filters.
---
 libavfilter/vf_scale.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/libavfilter/vf_scale.c b/libavfilter/vf_scale.c
index 44dc1f2bf8..dbe380d4c0 100644
--- a/libavfilter/vf_scale.c
+++ b/libavfilter/vf_scale.c
@@ -771,9 +771,6 @@ static int scale_frame(AVFilterLink *link, AVFrame *in, 
AVFrame **frame_out)
 int frame_changed;
 
 *frame_out = NULL;
-if (in->colorspace == AVCOL_SPC_YCGCO)
-av_log(link->dst, AV_LOG_WARNING, "Detected unsupported YCgCo 
colorspace.\n");
-
 frame_changed = in->width  != link->w ||
 in->height != link->h ||
 in->format != link->format ||
-- 
2.42.0

___
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".


[FFmpeg-devel] [PATCH 07/25] vf_scale: use colorspace negotiation API

2023-11-09 Thread Niklas Haas
From: Niklas Haas 

This filter will always accept any input format, even if the user sets
a specific in_range/in_color_matrix. This is to preserve status quo with
current behavior, where passing a specific in_color_matrix merely
overrides the incoming frames' attributes. (Use `vf_format` to force
a specific input range)

Because changing colorspace and color_range now requires reconfiguring
the link, we can lift sws_setColorspaceDetails out of scale_frame and
into config_props. (This will also get re-called if the input frame
properties change)
---
 libavfilter/vf_scale.c | 188 ++---
 1 file changed, 103 insertions(+), 85 deletions(-)

diff --git a/libavfilter/vf_scale.c b/libavfilter/vf_scale.c
index b45035907b..44dc1f2bf8 100644
--- a/libavfilter/vf_scale.c
+++ b/libavfilter/vf_scale.c
@@ -143,7 +143,6 @@ typedef struct ScaleContext {
 int out_color_matrix;
 
 int in_range;
-int in_frame_range;
 int out_range;
 
 int out_h_chr_pos;
@@ -292,6 +291,18 @@ static av_cold int preinit(AVFilterContext *ctx)
 return 0;
 }
 
+static const int sws_colorspaces[] = {
+AVCOL_SPC_UNSPECIFIED,
+AVCOL_SPC_RGB,
+AVCOL_SPC_BT709,
+AVCOL_SPC_BT470BG,
+AVCOL_SPC_SMPTE170M,
+AVCOL_SPC_FCC,
+AVCOL_SPC_SMPTE240M,
+AVCOL_SPC_BT2020_NCL,
+-1
+};
+
 static av_cold int init(AVFilterContext *ctx)
 {
 ScaleContext *scale = ctx->priv;
@@ -332,6 +343,19 @@ static av_cold int init(AVFilterContext *ctx)
 if (ret < 0)
 return ret;
 
+if (scale->in_color_matrix != -1 &&
+!ff_fmt_is_in(scale->in_color_matrix, sws_colorspaces)) {
+av_log(ctx, AV_LOG_ERROR, "Unsupported input color matrix '%s'\n",
+   av_color_space_name(scale->in_color_matrix));
+return AVERROR(EINVAL);
+}
+
+if (!ff_fmt_is_in(scale->out_color_matrix, sws_colorspaces)) {
+av_log(ctx, AV_LOG_ERROR, "Unsupported output color matrix '%s'\n",
+   av_color_space_name(scale->out_color_matrix));
+return AVERROR(EINVAL);
+}
+
 av_log(ctx, AV_LOG_VERBOSE, "w:%s h:%s flags:'%s' interl:%d\n",
scale->w_expr, scale->h_expr, (char 
*)av_x_if_null(scale->flags_str, ""), scale->interlaced);
 
@@ -356,8 +380,6 @@ static av_cold int init(AVFilterContext *ctx)
 if (!threads)
 av_opt_set_int(scale->sws_opts, "threads", 
ff_filter_get_nb_threads(ctx), 0);
 
-scale->in_frame_range = AVCOL_RANGE_UNSPECIFIED;
-
 return 0;
 }
 
@@ -376,6 +398,7 @@ static av_cold void uninit(AVFilterContext *ctx)
 
 static int query_formats(AVFilterContext *ctx)
 {
+ScaleContext *scale = ctx->priv;
 AVFilterFormats *formats;
 const AVPixFmtDescriptor *desc;
 enum AVPixelFormat pix_fmt;
@@ -407,6 +430,28 @@ static int query_formats(AVFilterContext *ctx)
 if ((ret = ff_formats_ref(formats, &ctx->outputs[0]->incfg.formats)) < 0)
 return ret;
 
+/* accept all supported inputs, even if user overrides their properties */
+if ((ret = ff_formats_ref(ff_make_format_list(sws_colorspaces),
+  &ctx->inputs[0]->outcfg.color_spaces)) < 0)
+return ret;
+
+if ((ret = ff_formats_ref(ff_all_color_ranges(),
+  &ctx->inputs[0]->outcfg.color_ranges)) < 0)
+return ret;
+
+/* propagate output properties if overridden */
+formats = scale->out_color_matrix != AVCOL_SPC_UNSPECIFIED
+? ff_make_formats_list_singleton(scale->out_color_matrix)
+: ff_make_format_list(sws_colorspaces);
+if ((ret = ff_formats_ref(formats, &ctx->outputs[0]->incfg.color_spaces)) 
< 0)
+return ret;
+
+formats = scale->out_range != AVCOL_RANGE_UNSPECIFIED
+? ff_make_formats_list_singleton(scale->out_range)
+: ff_all_color_ranges();
+if ((ret = ff_formats_ref(formats, &ctx->outputs[0]->incfg.color_ranges)) 
< 0)
+return ret;
+
 return 0;
 }
 
@@ -497,6 +542,7 @@ static int config_props(AVFilterLink *outlink)
 const AVPixFmtDescriptor *outdesc = av_pix_fmt_desc_get(outfmt);
 ScaleContext *scale = ctx->priv;
 uint8_t *flags_val = NULL;
+int in_range, in_colorspace;
 int ret;
 
 if ((ret = scale_eval_dimensions(ctx)) < 0)
@@ -521,6 +567,14 @@ static int config_props(AVFilterLink *outlink)
 if (outfmt == AV_PIX_FMT_PAL8) outfmt = AV_PIX_FMT_BGR8;
 scale->output_is_pal = av_pix_fmt_desc_get(outfmt)->flags & 
AV_PIX_FMT_FLAG_PAL;
 
+in_range = scale->in_range;
+if (in_range == AVCOL_RANGE_UNSPECIFIED)
+in_range = inlink0->color_range;
+
+in_colorspace = scale->in_color_matrix;
+if (in_colorspace == -1 /* auto */)
+in_colorspace = inlink0->colorspace;
+
 if (scale->sws)
 sws_freeContext(scale->sws);
 if (scale->isws[0])
@@ -530,8 +584,8 @@ static int config_props(AVFilterLink *outlink)
 scale->isws[0] = scale->isws[1] = scale->sws = NULL;
 if (inlink0->w

[FFmpeg-devel] [PATCH 10/25] avfilter/vf_zscale: switch to colorspace negotiation API

2023-11-09 Thread Niklas Haas
From: Niklas Haas 

Following the same design as vf_scale.
---
 libavfilter/vf_zscale.c | 44 +++--
 1 file changed, 34 insertions(+), 10 deletions(-)

diff --git a/libavfilter/vf_zscale.c b/libavfilter/vf_zscale.c
index f76c9954cd..3b14ce4f33 100644
--- a/libavfilter/vf_zscale.c
+++ b/libavfilter/vf_zscale.c
@@ -187,8 +187,12 @@ static av_cold int init(AVFilterContext *ctx)
 return 0;
 }
 
+static enum AVColorRange convert_range_from_zimg(enum zimg_pixel_range_e 
color_range);
+
 static int query_formats(AVFilterContext *ctx)
 {
+ZScaleContext *s = ctx->priv;
+AVFilterFormats *formats;
 static const enum AVPixelFormat pixel_fmts[] = {
 AV_PIX_FMT_YUV410P, AV_PIX_FMT_YUV411P,
 AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV422P,
@@ -217,7 +221,27 @@ static int query_formats(AVFilterContext *ctx)
 ret = ff_formats_ref(ff_make_format_list(pixel_fmts), 
&ctx->inputs[0]->outcfg.formats);
 if (ret < 0)
 return ret;
-return ff_formats_ref(ff_make_format_list(pixel_fmts), 
&ctx->outputs[0]->incfg.formats);
+ret = ff_formats_ref(ff_make_format_list(pixel_fmts), 
&ctx->outputs[0]->incfg.formats);
+if (ret < 0)
+return ret;
+
+if ((ret = ff_formats_ref(ff_all_color_spaces(), 
&ctx->inputs[0]->outcfg.formats)) < 0 ||
+(ret = ff_formats_ref(ff_all_color_ranges(), 
&ctx->inputs[0]->outcfg.formats)) < 0)
+return ret;
+
+formats = s->colorspace != ZIMG_MATRIX_UNSPECIFIED && s->colorspace > 0
+? ff_make_formats_list_singleton(s->colorspace)
+: ff_all_color_spaces();
+if ((ret = ff_formats_ref(formats, &ctx->outputs[0]->incfg.formats)) < 0)
+return ret;
+
+formats = s->range != -1
+? ff_make_formats_list_singleton(convert_range_from_zimg(s->range))
+: ff_all_color_ranges();
+if ((ret = ff_formats_ref(formats, &ctx->outputs[0]->incfg.formats)) < 0)
+return ret;
+
+return 0;
 }
 
 static void slice_params(ZScaleContext *s, int out_h, int in_h)
@@ -678,15 +702,9 @@ fail:
 
 static void update_output_color_information(ZScaleContext *s, AVFrame *frame)
 {
-if (s->colorspace != -1)
-frame->colorspace = (int)s->dst_format.matrix_coefficients;
-
 if (s->primaries != -1)
 frame->color_primaries = (int)s->dst_format.color_primaries;
 
-if (s->range != -1)
-frame->color_range = 
convert_range_from_zimg(s->dst_format.pixel_range);
-
 if (s->trc != -1)
 frame->color_trc = (int)s->dst_format.transfer_characteristics;
 
@@ -775,6 +793,8 @@ static int filter_frame(AVFilterLink *link, AVFrame *in)
 if ((link->format != outlink->format) ||
 (link->w != outlink->w) ||
 (link->h != outlink->h) ||
+(link->colorspace != outlink->colorspace) ||
+(link->color_range != outlink->color_range) ||
 s->first_time ||
 (s->src_format.chroma_location != s->dst_format.chroma_location) ||
 (s->src_format.color_family !=s->dst_format.color_family) ||
@@ -796,6 +816,8 @@ static int filter_frame(AVFilterLink *link, AVFrame *in)
 goto fail;
 
 av_frame_copy_props(out, in);
+out->colorspace = outlink->colorspace;
+out->color_range = outlink->color_range;
 
 if ((ret = realign_frame(desc, &in, 1)) < 0)
 goto fail;
@@ -805,9 +827,11 @@ static int filter_frame(AVFilterLink *link, AVFrame *in)
 snprintf(buf, sizeof(buf)-1, "%d", outlink->h);
 av_opt_set(s, "h", buf, 0);
 
-link->dst->inputs[0]->format = in->format;
-link->dst->inputs[0]->w  = in->width;
-link->dst->inputs[0]->h  = in->height;
+link->dst->inputs[0]->format  = in->format;
+link->dst->inputs[0]->w   = in->width;
+link->dst->inputs[0]->h   = in->height;
+link->dst->inputs[0]->colorspace  = in->colorspace;
+link->dst->inputs[0]->color_range = in->color_range;
 
 s->nb_threads = av_clip(FFMIN(ff_filter_get_nb_threads(ctx), 
FFMIN(link->h, outlink->h) / MIN_TILESIZE), 1, MAX_THREADS);
 slice_params(s, out->height, in->height);
-- 
2.42.0

___
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".


[FFmpeg-devel] [PATCH 09/25] avfilter/vf_zscale: remove unused variables

2023-11-09 Thread Niklas Haas
From: Niklas Haas 

Only assigned, never read.
---
 libavfilter/vf_zscale.c | 15 ---
 1 file changed, 15 deletions(-)

diff --git a/libavfilter/vf_zscale.c b/libavfilter/vf_zscale.c
index 788870ffaf..f76c9954cd 100644
--- a/libavfilter/vf_zscale.c
+++ b/libavfilter/vf_zscale.c
@@ -132,12 +132,6 @@ typedef struct ZScaleContext {
 zimg_graph_builder_params alpha_params, params;
 zimg_graph_builder_params alpha_params_tmp, params_tmp;
 zimg_filter_graph *alpha_graph[MAX_THREADS], *graph[MAX_THREADS];
-
-enum AVColorSpace in_colorspace, out_colorspace;
-enum AVColorTransferCharacteristic in_trc, out_trc;
-enum AVColorPrimaries in_primaries, out_primaries;
-enum AVColorRange in_range, out_range;
-enum AVChromaLocation in_chromal, out_chromal;
 } ZScaleContext;
 
 typedef struct ThreadData {
@@ -816,15 +810,6 @@ static int filter_frame(AVFilterLink *link, AVFrame *in)
 link->dst->inputs[0]->h  = in->height;
 
 s->nb_threads = av_clip(FFMIN(ff_filter_get_nb_threads(ctx), 
FFMIN(link->h, outlink->h) / MIN_TILESIZE), 1, MAX_THREADS);
-s->in_colorspace = in->colorspace;
-s->in_trc = in->color_trc;
-s->in_primaries = in->color_primaries;
-s->in_range = in->color_range;
-s->out_colorspace = out->colorspace;
-s->out_trc = out->color_trc;
-s->out_primaries = out->color_primaries;
-s->out_range = out->color_range;
-
 slice_params(s, out->height, in->height);
 
 zimg_image_format_default(&s->src_format, ZIMG_API_VERSION);
-- 
2.42.0

___
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".


[FFmpeg-devel] [PATCH 11/25] avfilter/vf_libplacebo: don't force dovi frames to bt.2020-ncl

2023-11-09 Thread Niklas Haas
From: Niklas Haas 

This is at odds with the YUV matrix negotiation API, in which such
dynamic changes in YUV encoding are no longer easily possible. There is
also no really strong motivating reason to do this, since the choice of
YUV matrix is essentially arbitrary and not actually related to the
Dolby Vision decoding process.
---
 libavfilter/vf_libplacebo.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/libavfilter/vf_libplacebo.c b/libavfilter/vf_libplacebo.c
index 8534945ba6..b6e82a61e0 100644
--- a/libavfilter/vf_libplacebo.c
+++ b/libavfilter/vf_libplacebo.c
@@ -888,7 +888,6 @@ static int output_frame(AVFilterContext *ctx, int64_t pts)
 if (s->apply_dovi && av_frame_get_side_data(ref, 
AV_FRAME_DATA_DOVI_METADATA)) {
 /* Output of dovi reshaping is always BT.2020+PQ, so infer the correct
  * output colorspace defaults */
-out->colorspace = AVCOL_SPC_BT2020_NCL;
 out->color_primaries = AVCOL_PRI_BT2020;
 out->color_trc = AVCOL_TRC_SMPTE2084;
 }
-- 
2.42.0

___
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] [ANNOUNCE] upcoming vote: extra members for GA

2023-11-09 Thread Anton Khirnov
Quoting James Almer (2023-11-09 13:24:45)
> Hendrik Leppkes and Reimar Döffinger are active, at least. I agree they 
> should be in the GA.

Right, I did not mean to imply ALL the people in the above list are
inactive. But many are.

-- 
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] [ANNOUNCE] upcoming vote: extra members for GA

2023-11-09 Thread Paul B Mahol
On Thu, Nov 9, 2023 at 12:55 PM Michael Niedermayer 
wrote:

> On Thu, Nov 09, 2023 at 10:44:12AM +0100, Anton Khirnov wrote:
> > As nobody expressed a preference, the vote will start next Monday
> > (2023-11-13). It should run for a week, and will be followed by TC/CC
> > elections.
> >
> > The only extra GA candidate I see proposed so far is Ronald. If anyone
> > wants to suggest further people, please do so in this thread ASAP.
>
> IMHO the question of the relation of the list of people who could vote
> in the last GA vote and the people who where in the general assembly
> in 2020 should be awnsered before further votes.
> https://lists.ffmpeg.org/pipermail/ffmpeg-devel/2023-November/316609.html
>
> If the current GA stays as it is, then i propose the following people
> (this list was quickly made and certainly has omisions and possibly errors,
> check anything thats important to you!)
>
> The presumed 2020 General assembly as well as people who have subtantial
> contributions over the lifetime of the project where the source of this
> list
>
> Fabrice Bellard(Founder of the project over 600 commits in FFmpeg)
> Aman Karmani   (17 authored commits in 2020-2023, recently active in
> 2023-June and work all over the codebase)
> Baptiste Coudurier (Pays for our fate server since forever, maintains 15
> things in MAINTAINERs, is the the copyright of 56 files, over 1900 commits
> in FFmpeg)
> Moritz Barsnick(Member of the 2020 GA but was not on jbs list)
> Lauri Kasanen  (Linux / PowerPC maintainer)
> Dale Curtis(14 commits in 2020 was in the 2020-GA)
> Alexander Strasser (Root admin, just recently reported that he could not
> vote even though he was in teh 2020-GA, 3 things in MAINTAINERs)
> foo86  (maintainer and author of dca*, dolby_e*, dtsdec, s337m)
> Huiwen Ren (8 matches in the codebase of his name, avs2* and
> related things maintainer)
> Martin Vignali (over 200 commits in FFmpeg, left in 2019 because of
> hostility)
>

Was hostile very much, even pushed extremely hostile commit in codebase
that is still kept.


> Lou Logan  (over 100 commits in FFmpeg, left in 2020, also in the
> 2020-GA but not on jbs list)
> Matthieu Bouron(over 200 commits in FFmpeg, recently active in 2022, 5
> entries in MAINTAINERs, 25 in copyrights)
> Ruiling Song   (vf_tonemap_opencl maintainer, added SIMD code to
> various bits of code, last active in git in 2020)
> John Stebbins  (over 100 commits in FFmpeg, last active in git in
> 2020, 1 copyright match)
> Ting Fu(last active in April 2023, 24 commits in 2021-2023, )
> Tobias Rapp(vf_readvitc mainatiner, last commit in Jul 2023, 88
> commits in FFmpeg)
> Shiyou Yin (MIPS & LoongArch maintainer, 24 matches for his name
> in the source, last commit May 2023)
> Reimar Döffinger   (over 1400 commits in FFmpeg, root admin and last
> commit in Oct 2023, 49 matches for his name in the codebase)
> Aurelien Jacobs(over 1000 commits in FFmpeg, 13 entries in
> MAINTAINERs, 70 copyright line matches)
> Hendrik Leppkes(over 900 commits in FFmpeg, 2 entries in MAINTAINERs,
> 4 copyrights, last commit in Jul 2023)
> Vitor Sessak   (over 900 commits in FFmpeg, 28 copyright matches)
> Kostya Shishkov(over 900 commits in FFmpeg, 162 copyright matches)
> Ramiro Polla   (over 600 commits in FFmpeg, 5 matches in MAINTAINERs,
> 22 copyright matches)
> Alex Converse  (over 500 commits in FFmpeg, 32 copyright matches)
> Janne Grunau   (over 500 commits in FFmpeg, 24 copyright matches)
> Andreas Cadhalpun  (over 400 commits in FFmpeg, 2 copyright matches)
>
> thx
>
> [...]
> --
> Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
>
> I know you won't believe me, but the highest form of Human Excellence is
> to question oneself and others. -- Socrates
> ___
> 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".
>
___
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] ffmpeg CLI multithreading

2023-11-09 Thread Paul B Mahol
On Thu, Nov 9, 2023 at 12:46 PM Anton Khirnov  wrote:

> If nobody objects, I will push 01-07/24 soonish.
>

Only after Nicolas properly reviews this.


> --
> 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".
>
___
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 v6] fftools/ffplay: add hwaccel decoding support

2023-11-09 Thread Zhao Zhili
Ping. v6 didn’t changed much compare to v5.

> On Nov 8, 2023, at 00:45, Zhao Zhili  wrote:
> 
> From: Zhao Zhili 
> 
> Add vulkan renderer via libplacebo.
> 
> Simple usage:
> $ ffplay -hwaccel vulkan foo.mp4
> 
> Use cuda to vulkan map:
> $ ffplay -hwaccel cuda foo.mp4
> 
> Create vulkan instance by libplacebo, and enable debug:
> $ ffplay -hwaccel vulkan \
>   -vulkan_params create_by_placebo=1:debug=1 foo.mp4
> ---
> v6:
>1. check PL_API_VER >= 278
>2. check hwctx->get_proc_addr against SDL_Vulkan_GetVkGetInstanceProcAddr()
> 
> v5:
>1. add vulkan_params option.
>2. vulkan instance can be create by hwcontext or libplacebo.
> 
> v4: add more optional extensions
> v3: shared vulkan instance between libplacebo and hwcontext
> 
> configure |   2 +-
> doc/ffplay.texi   |  12 +
> fftools/Makefile  |   2 +
> fftools/ffplay.c  |  96 -
> fftools/ffplay_renderer.c | 824 ++
> fftools/ffplay_renderer.h |  41 ++
> 6 files changed, 971 insertions(+), 6 deletions(-)
> create mode 100644 fftools/ffplay_renderer.c
> create mode 100644 fftools/ffplay_renderer.h
> 
> diff --git a/configure b/configure
> index 8ab658f730..80bfa8557c 100755
> --- a/configure
> +++ b/configure
> @@ -3903,7 +3903,7 @@ ffmpeg_select="aformat_filter anull_filter atrim_filter 
> format_filter
> ffmpeg_suggest="ole32 psapi shell32"
> ffplay_deps="avcodec avformat avfilter swscale swresample sdl2"
> ffplay_select="crop_filter transpose_filter hflip_filter vflip_filter 
> rotate_filter"
> -ffplay_suggest="shell32"
> +ffplay_suggest="shell32 libplacebo vulkan"
> ffprobe_deps="avcodec avformat"
> ffprobe_suggest="shell32"
> 
> diff --git a/doc/ffplay.texi b/doc/ffplay.texi
> index 5dd860b846..93f77eeece 100644
> --- a/doc/ffplay.texi
> +++ b/doc/ffplay.texi
> @@ -196,6 +196,18 @@ will produce a thread pool with this many threads 
> available for parallel
> processing. The default is 0 which means that the thread count will be
> determined by the number of available CPUs.
> 
> +@item -enable_vulkan
> +Use vulkan renderer rather than SDL builtin renderer. Depends on libplacebo.
> +
> +@item -vulkan_params
> +
> +Vulkan configuration using a list of @var{key}=@var{value} pairs separated by
> +":".
> +
> +@item -hwaccel
> +Use HW accelerated decoding. Enable this option will enable vulkan renderer
> +automatically.
> +
> @end table
> 
> @section While playing
> diff --git a/fftools/Makefile b/fftools/Makefile
> index 56820e6bc8..3c763e3db9 100644
> --- a/fftools/Makefile
> +++ b/fftools/Makefile
> @@ -22,6 +22,8 @@ OBJS-ffmpeg +=  \
> fftools/sync_queue.o\
> fftools/thread_queue.o  \
> 
> +OBJS-ffplay += fftools/ffplay_renderer.o
> +
> define DOFFTOOL
> OBJS-$(1) += fftools/cmdutils.o fftools/opt_common.o fftools/$(1).o 
> $(OBJS-$(1)-yes)
> ifdef HAVE_GNU_WINDRES
> diff --git a/fftools/ffplay.c b/fftools/ffplay.c
> index d8c69e10bc..873ee8cc74 100644
> --- a/fftools/ffplay.c
> +++ b/fftools/ffplay.c
> @@ -58,6 +58,7 @@
> #include 
> 
> #include "cmdutils.h"
> +#include "ffplay_renderer.h"
> #include "opt_common.h"
> 
> const char program_name[] = "ffplay";
> @@ -350,6 +351,9 @@ static char *afilters = NULL;
> static int autorotate = 1;
> static int find_stream_info = 1;
> static int filter_nbthreads = 0;
> +static int enable_vulkan = 0;
> +static char *vulkan_params = NULL;
> +static const char *hwaccel = NULL;
> 
> /* current context */
> static int is_full_screen;
> @@ -362,6 +366,8 @@ static SDL_Renderer *renderer;
> static SDL_RendererInfo renderer_info = {0};
> static SDL_AudioDeviceID audio_dev;
> 
> +static VkRenderer *vk_renderer;
> +
> static const struct TextureFormatEntry {
> enum AVPixelFormat format;
> int texture_fmt;
> @@ -954,6 +960,11 @@ static void video_image_display(VideoState *is)
> SDL_Rect rect;
> 
> vp = frame_queue_peek_last(&is->pictq);
> +if (vk_renderer) {
> +vk_renderer_display(vk_renderer, vp->frame);
> +return;
> +}
> +
> if (is->subtitle_st) {
> if (frame_queue_nb_remaining(&is->subpq) > 0) {
> sp = frame_queue_peek(&is->subpq);
> @@ -1289,6 +1300,8 @@ static void do_exit(VideoState *is)
> }
> if (renderer)
> SDL_DestroyRenderer(renderer);
> +if (vk_renderer)
> +vk_renderer_destroy(vk_renderer);
> if (window)
> SDL_DestroyWindow(window);
> uninit_opts();
> @@ -2546,6 +2559,37 @@ static int audio_open(void *opaque, AVChannelLayout 
> *wanted_channel_layout, int
> return spec.size;
> }
> 
> +static int create_hwaccel(AVBufferRef **device_ctx)
> +{
> +enum AVHWDeviceType type;
> +int ret;
> +AVBufferRef *vk_dev;
> +
> +*device_ctx = NULL;
> +
> +if (!hwaccel)
> +return 0;
> +
> +type = av_hwdevice_find_type_by_name(hwaccel);
> +if (type == AV_HWDEVICE_TYPE_NONE)
> +return AVERROR(ENOTSUP);
> +
> +ret = vk_renderer_get_hw_dev(vk_rende

Re: [FFmpeg-devel] [PATCH v28 1/2] avcodec/evc_encoder: Provided support for EVC encoder

2023-11-09 Thread Rémi Denis-Courmont
Hi,

Le 9 novembre 2023 12:16:28 GMT+02:00, "Dawid Kozinski/Multimedia (PLT) 
/SRPOL/Staff Engineer/Samsung Electronics"  a écrit :
>Hi, 
>
>Both, the implementation of the EVC encoder and decoder for FFmpeg depend on 
>external libraries (at least for now). They are just wrappers using external 
>libraries, namely libxeve (encoder implementation) and libxevd (decoder 
>implementation).
>
>The EVC defines two profiles: the "Baseline Profile" and the "Main Profile".
>For the encoder and decoder, libraries can be built for both main and baseline 
>profiles as follows:
>cmake .. -DSET_PROF=BASE && make && make install
>cmake .. -DSET_PROF=MAIN && make && make install

I guess that the point is that Linux distributions want a single library for 
all profiles. You can't have two libraries with the same name, obviously. And 
you also don't want two libraries with different SO names, but the 
same/conflicting exported symbols and same header and function names.

You make it sound like you have to choose a profile at compilation time, which 
sounds lazy to stay polite.

Br,
___
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] [ANNOUNCE] upcoming vote: extra members for GA

2023-11-09 Thread Michael Niedermayer
On Thu, Nov 09, 2023 at 07:11:37AM -0500, Vittorio Giovara wrote:
> On Thu, Nov 9, 2023 at 6:55 AM Michael Niedermayer 
> wrote:
> 
> > Fabrice Bellard(Founder of the project over 600 commits in FFmpeg)
> > Aman Karmani   (17 authored commits in 2020-2023, recently active in
> > 2023-June and work all over the codebase)
> > Baptiste Coudurier (Pays for our fate server since forever, maintains 15
> > things in MAINTAINERs, is the the copyright of 56 files, over 1900 commits
> > in FFmpeg)
> > Moritz Barsnick(Member of the 2020 GA but was not on jbs list)
> > Lauri Kasanen  (Linux / PowerPC maintainer)
> > Dale Curtis(14 commits in 2020 was in the 2020-GA)
> > Alexander Strasser (Root admin, just recently reported that he could not
> > vote even though he was in teh 2020-GA, 3 things in MAINTAINERs)
> > foo86  (maintainer and author of dca*, dolby_e*, dtsdec, s337m)
> > Huiwen Ren (8 matches in the codebase of his name, avs2* and
> > related things maintainer)
> > Martin Vignali (over 200 commits in FFmpeg, left in 2019 because of
> > hostility)
> > Lou Logan  (over 100 commits in FFmpeg, left in 2020, also in the
> > 2020-GA but not on jbs list)
> > Matthieu Bouron(over 200 commits in FFmpeg, recently active in 2022, 5
> > entries in MAINTAINERs, 25 in copyrights)
> > Ruiling Song   (vf_tonemap_opencl maintainer, added SIMD code to
> > various bits of code, last active in git in 2020)
> > John Stebbins  (over 100 commits in FFmpeg, last active in git in
> > 2020, 1 copyright match)
> > Ting Fu(last active in April 2023, 24 commits in 2021-2023, )
> > Tobias Rapp(vf_readvitc mainatiner, last commit in Jul 2023, 88
> > commits in FFmpeg)
> > Shiyou Yin (MIPS & LoongArch maintainer, 24 matches for his name
> > in the source, last commit May 2023)
> > Reimar Döffinger   (over 1400 commits in FFmpeg, root admin and last
> > commit in Oct 2023, 49 matches for his name in the codebase)
> > Aurelien Jacobs(over 1000 commits in FFmpeg, 13 entries in
> > MAINTAINERs, 70 copyright line matches)
> > Hendrik Leppkes(over 900 commits in FFmpeg, 2 entries in MAINTAINERs,
> > 4 copyrights, last commit in Jul 2023)
> > Vitor Sessak   (over 900 commits in FFmpeg, 28 copyright matches)
> > Kostya Shishkov(over 900 commits in FFmpeg, 162 copyright matches)
> > Ramiro Polla   (over 600 commits in FFmpeg, 5 matches in MAINTAINERs,
> > 22 copyright matches)
> > Alex Converse  (over 500 commits in FFmpeg, 32 copyright matches)
> > Janne Grunau   (over 500 commits in FFmpeg, 24 copyright matches)
> > Andreas Cadhalpun  (over 400 commits in FFmpeg, 2 copyright matches)
> >
> 
> just noting some people in the list have cut ties with this project and
> would much rather not be involved in anything related to ffmpeg -

People who do not want to be in the GA should be ommitted, thats obvious
i agree with that of course.


> as a rule
> of thumb it's probably safe to omit inactive developers and inactive
> founders from the list, in my opinion

That i do not agree with.
For example iam inactive in SPI and i do NOT vote in SPI but i very
much want to maintain my ability to vote if a situation arises that matters.
Why ? FFmpeg has alot of money with SPI so I want to maintain my ability to
cast a vote if a special situation arrises.

if you flip this around. Some inactive contributors are very dependant
on FFmpeg in their jobs. I do not belive they want to have no say in
major decissions in FFmpeg.

Why did i include people who left due to hostility?
It was a simple thought. If you form a group of people who oppose
hostility thats more likely to reduce hostility than if you form a
group of people who have a thick enough skin to stay.

Thx

[...]
-- 
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Let us carefully observe those good qualities wherein our enemies excel us
and endeavor to excel them, by avoiding what is faulty, and imitating what
is excellent in them. -- Plutarch


signature.asc
Description: PGP signature
___
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] [ANNOUNCE] upcoming vote: extra members for GA

2023-11-09 Thread Michael Niedermayer
On Thu, Nov 09, 2023 at 01:21:13PM +0100, Anton Khirnov wrote:
> Quoting Michael Niedermayer (2023-11-09 12:55:25)
> > On Thu, Nov 09, 2023 at 10:44:12AM +0100, Anton Khirnov wrote:
> > > As nobody expressed a preference, the vote will start next Monday
> > > (2023-11-13). It should run for a week, and will be followed by TC/CC
> > > elections.
> > > 
> > > The only extra GA candidate I see proposed so far is Ronald. If anyone
> > > wants to suggest further people, please do so in this thread ASAP.
> > 
> > IMHO the question of the relation of the list of people who could vote
> > in the last GA vote and the people who where in the general assembly
> > in 2020 should be awnsered before further votes.
> > https://lists.ffmpeg.org/pipermail/ffmpeg-devel/2023-November/316609.html
> 
> As far as I can tell, the voter list in the last vote should be the same
> as the GA from 2020, except for the extra members whose voting rights
> expire after 2 years.
> 
> Do you dispute that? 

There are at least 3 issues here

* The first and maybe the biggest, is that our vote superviser can reply to
  mails within 20min (like in this thread here) but is not replying to a simple
  question within days where the list of voters comes from he used and how it
  relates to the 2020 GA. It gives one the feeling he has some sort of
  difficulty with awnsering that question
  you took a guess here and replied, and i appreciate that. But really JB
  choose this list and also the one in 2020. Only he can explain where these
  lists come from and how they relate.
* The 2nd issue is that there are rules how to change the GA over time
  like that after 2 years there needs to a confirmation AND that the
  other members represent the "active" developers in the last 36 months.
  I can see an argument to leave the 2020 GA untouched and use it as is
  I can also see an argument to update it, and exactly this was done in a
  vote in 2021 by JB. Now we are here trying the 3rd variant of applying
  only half the rules.
  But whats more so, we actually are not. What you are doing here is
  looking at what happened and trying to rationalize it, trying to find
  an explanation for the list. Not stating upfront what this list is
  IMO this is not acceptable for a vote. Uhm we found this list, lets see
  where that might have come from 
* I know for a fact that at least zane was not in the 2020 GA as i talked
  with him and i know he did cast a vote in 2023 because again he told me.
  So even if you partially apply the rules these lists do not match

will write a seperate reply to the 2nd part of your mail

[...]

thx

[...]
-- 
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Frequently ignored answer#1 FFmpeg bugs should be sent to our bugtracker. User
questions about the command line tools should be sent to the ffmpeg-user ML.
And questions about how to use libav* should be sent to the libav-user ML.


signature.asc
Description: PGP signature
___
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] [ANNOUNCE] upcoming vote: extra members for GA

2023-11-09 Thread Jean-Baptiste Kempf


On Thu, 9 Nov 2023, at 17:21, Michael Niedermayer wrote:
> On Thu, Nov 09, 2023 at 01:21:13PM +0100, Anton Khirnov wrote:
>> Quoting Michael Niedermayer (2023-11-09 12:55:25)
>> > On Thu, Nov 09, 2023 at 10:44:12AM +0100, Anton Khirnov wrote:
>> > > As nobody expressed a preference, the vote will start next Monday
>> > > (2023-11-13). It should run for a week, and will be followed by TC/CC
>> > > elections.
>> > > 
>> > > The only extra GA candidate I see proposed so far is Ronald. If anyone
>> > > wants to suggest further people, please do so in this thread ASAP.
>> > 
>> > IMHO the question of the relation of the list of people who could vote
>> > in the last GA vote and the people who where in the general assembly
>> > in 2020 should be awnsered before further votes.
>> > https://lists.ffmpeg.org/pipermail/ffmpeg-devel/2023-November/316609.html
>> 
>> As far as I can tell, the voter list in the last vote should be the same
>> as the GA from 2020, except for the extra members whose voting rights
>> expire after 2 years.
>> 
>> Do you dispute that? 
>
> There are at least 3 issues here
>
> * The first and maybe the biggest, is that our vote superviser can reply to
>   mails within 20min (like in this thread here) but is not replying to a 
> simple
>   question within days where the list of voters comes from he used and how it

WTF are you talking about ?
WTF are you attacking me on my email response time?

>   relates to the 2020 GA. It gives one the feeling he has some sort of
>   difficulty with awnsering that question
>   you took a guess here and replied, and i appreciate that. But really JB
>   choose this list and also the one in 2020. Only he can explain where these

I choose nothing. I got the list that was provided to me for the first vote, 
after the script was written.

I did not write the script, I did not run the script.

Would you stop smearing me?

This is absolutely unacceptable.

A contrario from you, I am not part of the GA and I don’t have voting rights…

> * The 2nd issue is that there are rules how to change the GA over time

No they don’t.
We discussed and voted a way, and after years it seems it was not clear enough 
for some people.

> Now we are here trying the 3rd variant of applying
>   only half the rules.

So what? The previous way was not clear enough for people, so we vote for a new 
way.
And it was accepted quite largely against the other options.

>   Not stating upfront what this list is
>   IMO this is not acceptable for a vote.

How so? Do you go to and see the list of all the voters in Austria before doing 
a vote ?

Especially, here, it is to bootstrap a new way of voting.

If the vote was close, maybe there could be discussion, but here, this is not 
the case.

And stop smearing me in the mud.

-- 
Jean-Baptiste Kempf -  President
+33 672 704 734
___
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] [ANNOUNCE] upcoming vote: extra members for GA

2023-11-09 Thread Vittorio Giovara
On Thu, Nov 9, 2023 at 10:40 AM Michael Niedermayer 
wrote:

> On Thu, Nov 09, 2023 at 07:11:37AM -0500, Vittorio Giovara wrote:
> > On Thu, Nov 9, 2023 at 6:55 AM Michael Niedermayer <
> mich...@niedermayer.cc>
> > wrote:
> >
> > > Fabrice Bellard(Founder of the project over 600 commits in FFmpeg)
> > > Aman Karmani   (17 authored commits in 2020-2023, recently active
> in
> > > 2023-June and work all over the codebase)
> > > Baptiste Coudurier (Pays for our fate server since forever, maintains
> 15
> > > things in MAINTAINERs, is the the copyright of 56 files, over 1900
> commits
> > > in FFmpeg)
> > > Moritz Barsnick(Member of the 2020 GA but was not on jbs list)
> > > Lauri Kasanen  (Linux / PowerPC maintainer)
> > > Dale Curtis(14 commits in 2020 was in the 2020-GA)
> > > Alexander Strasser (Root admin, just recently reported that he could
> not
> > > vote even though he was in teh 2020-GA, 3 things in MAINTAINERs)
> > > foo86  (maintainer and author of dca*, dolby_e*, dtsdec,
> s337m)
> > > Huiwen Ren (8 matches in the codebase of his name, avs2* and
> > > related things maintainer)
> > > Martin Vignali (over 200 commits in FFmpeg, left in 2019 because of
> > > hostility)
> > > Lou Logan  (over 100 commits in FFmpeg, left in 2020, also in
> the
> > > 2020-GA but not on jbs list)
> > > Matthieu Bouron(over 200 commits in FFmpeg, recently active in
> 2022, 5
> > > entries in MAINTAINERs, 25 in copyrights)
> > > Ruiling Song   (vf_tonemap_opencl maintainer, added SIMD code to
> > > various bits of code, last active in git in 2020)
> > > John Stebbins  (over 100 commits in FFmpeg, last active in git in
> > > 2020, 1 copyright match)
> > > Ting Fu(last active in April 2023, 24 commits in
> 2021-2023, )
> > > Tobias Rapp(vf_readvitc mainatiner, last commit in Jul 2023, 88
> > > commits in FFmpeg)
> > > Shiyou Yin (MIPS & LoongArch maintainer, 24 matches for his
> name
> > > in the source, last commit May 2023)
> > > Reimar Döffinger   (over 1400 commits in FFmpeg, root admin and last
> > > commit in Oct 2023, 49 matches for his name in the codebase)
> > > Aurelien Jacobs(over 1000 commits in FFmpeg, 13 entries in
> > > MAINTAINERs, 70 copyright line matches)
> > > Hendrik Leppkes(over 900 commits in FFmpeg, 2 entries in
> MAINTAINERs,
> > > 4 copyrights, last commit in Jul 2023)
> > > Vitor Sessak   (over 900 commits in FFmpeg, 28 copyright matches)
> > > Kostya Shishkov(over 900 commits in FFmpeg, 162 copyright matches)
> > > Ramiro Polla   (over 600 commits in FFmpeg, 5 matches in
> MAINTAINERs,
> > > 22 copyright matches)
> > > Alex Converse  (over 500 commits in FFmpeg, 32 copyright matches)
> > > Janne Grunau   (over 500 commits in FFmpeg, 24 copyright matches)
> > > Andreas Cadhalpun  (over 400 commits in FFmpeg, 2 copyright matches)
> > >
> >
> > just noting some people in the list have cut ties with this project and
> > would much rather not be involved in anything related to ffmpeg -
>
> People who do not want to be in the GA should be ommitted, thats obvious
> i agree with that of course.
>
>
> > as a rule
> > of thumb it's probably safe to omit inactive developers and inactive
> > founders from the list, in my opinion
>
> That i do not agree with.
> For example iam inactive in SPI and i do NOT vote in SPI but i very
> much want to maintain my ability to vote if a situation arises that
> matters.
> Why ? FFmpeg has alot of money with SPI so I want to maintain my ability to
> cast a vote if a special situation arrises.
>

Right but you *are* maintaining an active interest in SPI because it
matters to you and the project, but your situation doesn't directly
translate to the people listed, who might consider being included
automatically as spam in the best case and offensive in the worst case.

if you flip this around. Some inactive contributors are very dependant
> on FFmpeg in their jobs. I do not belive they want to have no say in
> major decissions in FFmpeg.
>

I mean if they are "very dependent" maybe they should spend a minimum time
of "volunteer service" if they want to have a stake in voting matters.
Voting is a right but it has obligations too, and just diluting the GA with
inactive people (who might not even vote) won't do the project any good


> Why did i include people who left due to hostility?
> It was a simple thought. If you form a group of people who oppose
> hostility thats more likely to reduce hostility than if you form a
> group of people who have a thick enough skin to stay.
>

Sorry I cannot parse this sentence

As mentioned, in general we shouldn't just assume that people want the
extra baggage and responsibility of being part of the GA without the direct
involvement and candidacy, in my opinion.
-- 
Vittorio
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-deve

Re: [FFmpeg-devel] [ANNOUNCE] upcoming vote: extra members for GA

2023-11-09 Thread Michael Niedermayer
On Thu, Nov 09, 2023 at 01:21:13PM +0100, Anton Khirnov wrote:
> Quoting Michael Niedermayer (2023-11-09 12:55:25)
[...]
> > If the current GA stays as it is, then i propose the following people
> > (this list was quickly made and certainly has omisions and possibly errors,
> > check anything thats important to you!)
> > 
> > The presumed 2020 General assembly as well as people who have subtantial
> > contributions over the lifetime of the project where the source of this list
> 
> > Ting Fu(last active in April 2023, 24 commits in 2021-2023, )
> 
> He actually is in the GA, but his Intel mailbox bounces.

i couldnt find another address either after a quick look :(


[...]
> > Fabrice Bellard(Founder of the project over 600 commits in FFmpeg)
> > Aman Karmani   (17 authored commits in 2020-2023, recently active in 
> > 2023-June and work all over the codebase)
> > Baptiste Coudurier (Pays for our fate server since forever, maintains 15 
> > things in MAINTAINERs, is the the copyright of 56 files, over 1900 commits 
> > in FFmpeg)
> > Moritz Barsnick(Member of the 2020 GA but was not on jbs list)
> > Lauri Kasanen  (Linux / PowerPC maintainer)
> > Dale Curtis(14 commits in 2020 was in the 2020-GA)
> > Alexander Strasser (Root admin, just recently reported that he could not 
> > vote even though he was in teh 2020-GA, 3 things in MAINTAINERs)
> > foo86  (maintainer and author of dca*, dolby_e*, dtsdec, s337m)
> > Huiwen Ren (8 matches in the codebase of his name, avs2* and 
> > related things maintainer)
> > Martin Vignali (over 200 commits in FFmpeg, left in 2019 because of 
> > hostility)
> > Lou Logan  (over 100 commits in FFmpeg, left in 2020, also in the 
> > 2020-GA but not on jbs list)
> > Matthieu Bouron(over 200 commits in FFmpeg, recently active in 2022, 5 
> > entries in MAINTAINERs, 25 in copyrights)
> > Ruiling Song   (vf_tonemap_opencl maintainer, added SIMD code to 
> > various bits of code, last active in git in 2020)
> > John Stebbins  (over 100 commits in FFmpeg, last active in git in 2020, 
> > 1 copyright match)
> > Tobias Rapp(vf_readvitc mainatiner, last commit in Jul 2023, 88 
> > commits in FFmpeg)
> > Shiyou Yin (MIPS & LoongArch maintainer, 24 matches for his name in 
> > the source, last commit May 2023)
> > Reimar Döffinger   (over 1400 commits in FFmpeg, root admin and last commit 
> > in Oct 2023, 49 matches for his name in the codebase)
> > Aurelien Jacobs(over 1000 commits in FFmpeg, 13 entries in MAINTAINERs, 
> > 70 copyright line matches)
> > Hendrik Leppkes(over 900 commits in FFmpeg, 2 entries in MAINTAINERs, 4 
> > copyrights, last commit in Jul 2023)
> > Vitor Sessak   (over 900 commits in FFmpeg, 28 copyright matches)
> > Kostya Shishkov(over 900 commits in FFmpeg, 162 copyright matches)
> > Ramiro Polla   (over 600 commits in FFmpeg, 5 matches in MAINTAINERs, 
> > 22 copyright matches)
> > Alex Converse  (over 500 commits in FFmpeg, 32 copyright matches)
> > Janne Grunau   (over 500 commits in FFmpeg, 24 copyright matches)
> > Andreas Cadhalpun  (over 400 commits in FFmpeg, 2 copyright matches)
>
> Sending voting emails to people who have not had any contact with the
> project for years, can be regarded as spamming.

someone who made hundreads of contributions can expect some
occasional feedback until he indicates that he wants to hear no more
after which of course he should not receive any further communication.

that said, i checked ML subscribers and found
16 of the people above to be currently subscribed with email addresses
that i found by greping their name. (not posting the list due to privacy
concerns)


> I think there should be
> some confirmation that these people are actually interested in having
> voting rights.

Yes, i guess so
If people want that. I volunteer and will contact them all and ask.
It was my suggestion to add these people so iam ready to do the work.
But we should give them a week at least to reply.
Should i ask all or limit to the ones who are not subscribed to the ML
with a identifyable address ?

thx

-- 
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

The worst form of inequality is to try to make unequal things equal.
-- Aristotle


signature.asc
Description: PGP signature
___
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] [ANNOUNCE] upcoming vote: extra members for GA

2023-11-09 Thread Rémi Denis-Courmont
Le torstaina 9. marraskuuta 2023, 18.50.52 EET Michael Niedermayer a écrit :
> that said, i checked ML subscribers and found
> 16 of the people above to be currently subscribed with email addresses
> that i found by greping their name. (not posting the list due to privacy
> concerns)

Thing is, if they are subscribed and still don't ask to be added to the GA, I 
don't think they should be "volunteered" by someone else. They are of course 
welcome to apply.

And if they are not subscribed, then they should not be added to the GA, not 
only because they presumably don't want to hear about FFmpeg at the moment, 
but also because they are probably totally out of the loop about it, so to 
speak.

-- 
雷米‧德尼-库尔蒙
http://www.remlab.net/



___
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] [ANNOUNCE] upcoming vote: extra members for GA

2023-11-09 Thread Anton Khirnov
Quoting Michael Niedermayer (2023-11-09 17:21:12)
> On Thu, Nov 09, 2023 at 01:21:13PM +0100, Anton Khirnov wrote:
> > As far as I can tell, the voter list in the last vote should be the same
> > as the GA from 2020, except for the extra members whose voting rights
> > expire after 2 years.
> > 
> > Do you dispute that? 
> 
> There are at least 3 issues here
> 
> * The first and maybe the biggest, is that our vote superviser can reply to
>   mails within 20min (like in this thread here) but is not replying to a 
> simple
>   question within days where the list of voters comes from he used and how it
>   relates to the 2020 GA. It gives one the feeling he has some sort of
>   difficulty with awnsering that question
>   you took a guess here and replied, and i appreciate that. But really JB
>   choose this list and also the one in 2020. Only he can explain where these
>   lists come from and how they relate.

JB did explain where the list comes from [1] - it was generated by the
script that is now in our tree. Nobody disputed it in 2020.

> * I know for a fact that at least zane was not in the 2020 GA as i talked
>   with him and i know he did cast a vote in 2023 because again he told me.
>   So even if you partially apply the rules these lists do not match

Zane had 30 commits in July 2020, so he SHOULD have been on the list. If
he wasn't, then it was a mistake in 2020.

> * The 2nd issue is that there are rules how to change the GA over time
>   like that after 2 years there needs to a confirmation AND that the
>   other members represent the "active" developers in the last 36 months.
>   I can see an argument to leave the 2020 GA untouched and use it as is
>   I can also see an argument to update it, and exactly this was done in a
>   vote in 2021 by JB. Now we are here trying the 3rd variant of applying
>   only half the rules.
>   But whats more so, we actually are not. What you are doing here is
>   looking at what happened and trying to rationalize it, trying to find
>   an explanation for the list. Not stating upfront what this list is
>   IMO this is not acceptable for a vote. Uhm we found this list, lets see
>   where that might have come from 

To be honest, it very much seems to me that you are trying to bikeshed
the process to death. Yes, it is imperfect, but that is to be expected
given we've only used it a few times so far, and the last time was over
2 years ago. What we are doing here is trying to clarify the rules so
that we actually can vote with some regularity.

In the vote we just had, option A won its contests against B/C/D by
17/7, 23/1, and 17/7, respectively. While it is possible that the list
used was not entirely correct (also depending on
the intepretation of the rules), I see no reason to think it was
incorrect in 10 people, which is what you'd need to have a chance of
getting a different result.

[1] http://lists.ffmpeg.org/pipermail/ffmpeg-devel/2020-June/264732.html

-- 
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] [ANNOUNCE] upcoming vote: extra members for GA

2023-11-09 Thread Michael Niedermayer
On Thu, Nov 09, 2023 at 05:36:10PM +0100, Jean-Baptiste Kempf wrote:
> 
> 
> On Thu, 9 Nov 2023, at 17:21, Michael Niedermayer wrote:
> > On Thu, Nov 09, 2023 at 01:21:13PM +0100, Anton Khirnov wrote:
> >> Quoting Michael Niedermayer (2023-11-09 12:55:25)
> >> > On Thu, Nov 09, 2023 at 10:44:12AM +0100, Anton Khirnov wrote:
> >> > > As nobody expressed a preference, the vote will start next Monday
> >> > > (2023-11-13). It should run for a week, and will be followed by TC/CC
> >> > > elections.
> >> > > 
> >> > > The only extra GA candidate I see proposed so far is Ronald. If anyone
> >> > > wants to suggest further people, please do so in this thread ASAP.
> >> > 
> >> > IMHO the question of the relation of the list of people who could vote
> >> > in the last GA vote and the people who where in the general assembly
> >> > in 2020 should be awnsered before further votes.
> >> > https://lists.ffmpeg.org/pipermail/ffmpeg-devel/2023-November/316609.html
> >> 
> >> As far as I can tell, the voter list in the last vote should be the same
> >> as the GA from 2020, except for the extra members whose voting rights
> >> expire after 2 years.
> >> 
> >> Do you dispute that? 
> >
> > There are at least 3 issues here
> >
> > * The first and maybe the biggest, is that our vote superviser can reply to
> >   mails within 20min (like in this thread here) but is not replying to a 
> > simple
> >   question within days where the list of voters comes from he used and how 
> > it
> 
> WTF are you talking about ?
> WTF are you attacking me on my email response time?
> 
> >   relates to the 2020 GA. It gives one the feeling he has some sort of
> >   difficulty with awnsering that question
> >   you took a guess here and replied, and i appreciate that. But really JB
> >   choose this list and also the one in 2020. Only he can explain where these
> 
> I choose nothing. I got the list that was provided to me for the first vote, 
> after the script was written.
> 
> I did not write the script, I did not run the script.
> 
> Would you stop smearing me?
> 
> This is absolutely unacceptable.

As the vote superviser you are responsible for the vote.
your reaction is IMHO unacceptable.

theres a list of voters in 2020 and 2023
iam asking for how these 2 lists relate and instead of awnsering that
you are talking about everything else

i will seperately reply to your question about voting in austria as its
off topic here

thx

[...]
-- 
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Concerning the gods, I have no means of knowing whether they exist or not
or of what sort they may be, because of the obscurity of the subject, and
the brevity of human life -- Protagoras


signature.asc
Description: PGP signature
___
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] [ANNOUNCE] upcoming vote: extra members for GA

2023-11-09 Thread Jean-Baptiste Kempf
On Thu, 9 Nov 2023, at 18:24, Michael Niedermayer wrote:
> theres a list of voters in 2020 and 2023

The list of voters in 2020 comes from the script written by Josh (IIRC?) and 
run by Thilo (?) IIRC when Thilo installed CIVS.
It quite matches the gitlog.

The list was reused for the vote, and now the new list was written by Anton 
with the new script.

Whatever the old script was, and how wrong it was, I don't think it would 
change the result of the re-bootstrapping vote.
And now we have a clean list for the extra members of the GA.

-- 
Jean-Baptiste Kempf -  President
+33 672 704 734
___
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] [ANNOUNCE] upcoming vote: extra members for GA

2023-11-09 Thread Michael Niedermayer
On Thu, Nov 09, 2023 at 06:06:16PM +0100, Anton Khirnov wrote:
> Quoting Michael Niedermayer (2023-11-09 17:21:12)
> > On Thu, Nov 09, 2023 at 01:21:13PM +0100, Anton Khirnov wrote:
> > > As far as I can tell, the voter list in the last vote should be the same
> > > as the GA from 2020, except for the extra members whose voting rights
> > > expire after 2 years.
> > > 
> > > Do you dispute that? 
> > 
> > There are at least 3 issues here
> > 
> > * The first and maybe the biggest, is that our vote superviser can reply to
> >   mails within 20min (like in this thread here) but is not replying to a 
> > simple
> >   question within days where the list of voters comes from he used and how 
> > it
> >   relates to the 2020 GA. It gives one the feeling he has some sort of
> >   difficulty with awnsering that question
> >   you took a guess here and replied, and i appreciate that. But really JB
> >   choose this list and also the one in 2020. Only he can explain where these
> >   lists come from and how they relate.
> 
> JB did explain where the list comes from [1] - it was generated by the
> script that is now in our tree. Nobody disputed it in 2020.
> 
> > * I know for a fact that at least zane was not in the 2020 GA as i talked
> >   with him and i know he did cast a vote in 2023 because again he told me.
> >   So even if you partially apply the rules these lists do not match
> 
> Zane had 30 commits in July 2020, so he SHOULD have been on the list. If
> he wasn't, then it was a mistake in 2020.

the 2020 GA list cannot have been created in July 2020 because there where
votes prior that used it.


> 
> > * The 2nd issue is that there are rules how to change the GA over time
> >   like that after 2 years there needs to a confirmation AND that the
> >   other members represent the "active" developers in the last 36 months.
> >   I can see an argument to leave the 2020 GA untouched and use it as is
> >   I can also see an argument to update it, and exactly this was done in a
> >   vote in 2021 by JB. Now we are here trying the 3rd variant of applying
> >   only half the rules.
> >   But whats more so, we actually are not. What you are doing here is
> >   looking at what happened and trying to rationalize it, trying to find
> >   an explanation for the list. Not stating upfront what this list is
> >   IMO this is not acceptable for a vote. Uhm we found this list, lets see
> >   where that might have come from 
> 
> To be honest, it very much seems to me that you are trying to bikeshed
> the process to death. Yes, it is imperfect, but that is to be expected
> given we've only used it a few times so far, and the last time was over
> 2 years ago. What we are doing here is trying to clarify the rules so
> that we actually can vote with some regularity.

Is it bikesheding if 2 lists that are supposed to be the same differ in
multiple entries ?

these are lists with roughly 50 entries, now we _know_ 2 people differ
but there where 3 on the extra voters list so really 4 differ almost certainly
thats roughly 10% of the voters are wrong.
Thats not bikesheding IMO. We arent talking about 1 voter in hundreads.

I do want to know what happened here and want to have this not happen
again. if i offend people with that investigation then so be it


> 
> In the vote we just had, option A won its contests against B/C/D by
> 17/7, 23/1, and 17/7, respectively. While it is possible that the list
> used was not entirely correct (also depending on
> the intepretation of the rules), I see no reason to think it was
> incorrect in 10 people, which is what you'd need to have a chance of
> getting a different result.

Its not just this vote, its that we need to understand what happened here
so we can prevent this from happening again

thx
[...]
-- 
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Nations do behave wisely once they have exhausted all other alternatives. 
-- Abba Eban


signature.asc
Description: PGP signature
___
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] [ANNOUNCE] upcoming vote: extra members for GA

2023-11-09 Thread Kieran Kunhya via ffmpeg-devel
On Thu, Nov 9, 2023 at 5:06 PM Anton Khirnov  wrote:
>
> Quoting Michael Niedermayer (2023-11-09 17:21:12)
> > On Thu, Nov 09, 2023 at 01:21:13PM +0100, Anton Khirnov wrote:
> > > As far as I can tell, the voter list in the last vote should be the same
> > > as the GA from 2020, except for the extra members whose voting rights
> > > expire after 2 years.
> > >
> > > Do you dispute that?
> >
> > There are at least 3 issues here
> >
> > * The first and maybe the biggest, is that our vote superviser can reply to
> >   mails within 20min (like in this thread here) but is not replying to a 
> > simple
> >   question within days where the list of voters comes from he used and how 
> > it
> >   relates to the 2020 GA. It gives one the feeling he has some sort of
> >   difficulty with awnsering that question
> >   you took a guess here and replied, and i appreciate that. But really JB
> >   choose this list and also the one in 2020. Only he can explain where these
> >   lists come from and how they relate.
>
> JB did explain where the list comes from [1] - it was generated by the
> script that is now in our tree. Nobody disputed it in 2020.
>
> > * I know for a fact that at least zane was not in the 2020 GA as i talked
> >   with him and i know he did cast a vote in 2023 because again he told me.
> >   So even if you partially apply the rules these lists do not match
>
> Zane had 30 commits in July 2020, so he SHOULD have been on the list. If
> he wasn't, then it was a mistake in 2020.
>
> > * The 2nd issue is that there are rules how to change the GA over time
> >   like that after 2 years there needs to a confirmation AND that the
> >   other members represent the "active" developers in the last 36 months.
> >   I can see an argument to leave the 2020 GA untouched and use it as is
> >   I can also see an argument to update it, and exactly this was done in a
> >   vote in 2021 by JB. Now we are here trying the 3rd variant of applying
> >   only half the rules.
> >   But whats more so, we actually are not. What you are doing here is
> >   looking at what happened and trying to rationalize it, trying to find
> >   an explanation for the list. Not stating upfront what this list is
> >   IMO this is not acceptable for a vote. Uhm we found this list, lets see
> >   where that might have come from 
>
> To be honest, it very much seems to me that you are trying to bikeshed
> the process to death. Yes, it is imperfect, but that is to be expected
> given we've only used it a few times so far, and the last time was over
> 2 years ago. What we are doing here is trying to clarify the rules so
> that we actually can vote with some regularity.
>
> In the vote we just had, option A won its contests against B/C/D by
> 17/7, 23/1, and 17/7, respectively. While it is possible that the list
> used was not entirely correct (also depending on
> the intepretation of the rules), I see no reason to think it was
> incorrect in 10 people, which is what you'd need to have a chance of
> getting a different result.
>
> [1] http://lists.ffmpeg.org/pipermail/ffmpeg-devel/2020-June/264732.html
>
> --
> Anton Khirnov

Organizations and Conferences

Insist on doing everything through “channels.” Never permit
short-cuts to be taken in order to expedite decisions.
Make “speeches.” Talk as frequently as possible and at great
length. Illustrate your “points” by long anecdotes and accounts of
personal experiences.
When possible, refer all matters to committees, for “further study
and consideration.” Attempt to make the committee as large as possible
— never less than five.
Bring up irrelevant issues as frequently as possible.
Haggle over precise wordings of communications, minutes, resolutions.
Refer back to matters decided upon at the last meeting and attempt
to re-open the question of the advisability of that decision.
Advocate “caution.” Be “reasonable” and urge your fellow-conferees
to be “reasonable” and avoid haste which might result in
embarrassments or difficulties later on.

source: 
https://www.forbes.com/sites/eriklarson/2023/08/15/a-spys-guide-to-making-bad-decisions/

Presented without comment.

Regards,
Kieran Kunhya
___
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] [ANNOUNCE] upcoming vote: extra members for GA

2023-11-09 Thread Michael Niedermayer
On Thu, Nov 09, 2023 at 07:04:00PM +0200, Rémi Denis-Courmont wrote:
> Le torstaina 9. marraskuuta 2023, 18.50.52 EET Michael Niedermayer a écrit :
> > that said, i checked ML subscribers and found
> > 16 of the people above to be currently subscribed with email addresses
> > that i found by greping their name. (not posting the list due to privacy
> > concerns)
> 
> Thing is, if they are subscribed and still don't ask to be added to the GA, I 
> don't think they should be "volunteered" by someone else. They are of course 
> welcome to apply.
> 
> And if they are not subscribed, then they should not be added to the GA, not 
> only because they presumably don't want to hear about FFmpeg at the moment, 
> but also because they are probably totally out of the loop about it, so to 
> speak.

While i can find 16 who are subscribed. I have no way to find people who
are not subscribed, they can be subcribed using some email addess that doesnt
include their name in either domain or user

thx

[...]

-- 
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

It is a danger to trust the dream we wish for rather than
the science we have, -- Dr. Kenneth Brown


signature.asc
Description: PGP signature
___
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] [ANNOUNCE] upcoming vote: extra members for GA

2023-11-09 Thread Michael Niedermayer
On Thu, Nov 09, 2023 at 06:31:13PM +0100, Jean-Baptiste Kempf wrote:
> On Thu, 9 Nov 2023, at 18:24, Michael Niedermayer wrote:
> > theres a list of voters in 2020 and 2023
> 
> The list of voters in 2020 comes from the script written by Josh (IIRC?) and 
> run by Thilo (?) IIRC when Thilo installed CIVS.
> It quite matches the gitlog.
> 
> The list was reused for the vote,

Thats not possible
multiple people on this list did not have 20 commits at the time the list must 
have been made

Example: Gautam Ramakrishnan has 20 commits after 2020 Jul 16
but the TC/CC votes in 2020 where prior to that

(and i already mentioned zane)

So I do not see how the list of names you posted can be the same list as
the one used in 2020

thx
[...]
-- 
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

The educated differ from the uneducated as much as the living from the
dead. -- Aristotle 


signature.asc
Description: PGP signature
___
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] [ANNOUNCE] upcoming vote: extra members for GA

2023-11-09 Thread Rémi Denis-Courmont
Le torstaina 9. marraskuuta 2023, 19.41.53 EET Michael Niedermayer a écrit :
> On Thu, Nov 09, 2023 at 07:04:00PM +0200, Rémi Denis-Courmont wrote:
> > Le torstaina 9. marraskuuta 2023, 18.50.52 EET Michael Niedermayer a écrit 
:
> > > that said, i checked ML subscribers and found
> > > 16 of the people above to be currently subscribed with email addresses
> > > that i found by greping their name. (not posting the list due to privacy
> > > concerns)
> > 
> > Thing is, if they are subscribed and still don't ask to be added to the
> > GA, I don't think they should be "volunteered" by someone else. They are
> > of course welcome to apply.
> > 
> > And if they are not subscribed, then they should not be added to the GA,
> > not only because they presumably don't want to hear about FFmpeg at the
> > moment, but also because they are probably totally out of the loop about
> > it, so to speak.
> 
> While i can find 16 who are subscribed. I have no way to find people who
> are not subscribed, they can be subcribed using some email addess that
> doesnt include their name in either domain or user

The point is that, whether or not they are on the mailing list, people should 
not be volunteered to the GA by others, but on their own volition. The 
circumstances are different for those on the mailing list and those not, but 
the end result is the same: don't nominate people like that. It's rude.

 (In fact, they are also potentially people on the mailing list but with 
Mailman delivery turned off, as well as people who don't read the email account 
through which they are subscribed.)

If you think some people should be added, as far as I am concerned, you are of 
course welcome to nudge them via private message to friendly remind them that 
they can nominate themselves.

-- 
Rémi Denis-Courmont
http://www.remlab.net/



___
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] [ANNOUNCE] upcoming vote: extra members for GA

2023-11-09 Thread Thilo Borgmann via ffmpeg-devel

Am 09.11.23 um 18:50 schrieb Michael Niedermayer:

On Thu, Nov 09, 2023 at 06:31:13PM +0100, Jean-Baptiste Kempf wrote:

On Thu, 9 Nov 2023, at 18:24, Michael Niedermayer wrote:

theres a list of voters in 2020 and 2023


The list of voters in 2020 comes from the script written by Josh (IIRC?) and 
run by Thilo (?) IIRC when Thilo installed CIVS.
It quite matches the gitlog.

The list was reused for the vote,


Thats not possible
multiple people on this list did not have 20 commits at the time the list must 
have been made

Example: Gautam Ramakrishnan has 20 commits after 2020 Jul 16
but the TC/CC votes in 2020 where prior to that

(and i already mentioned zane)

So I do not see how the list of names you posted can be the same list as
the one used in 2020


The script came in by Josh [1].
The vote was run by JB [2].

In [2] the CIVS reported 49 authorized voters as JB mentioned in the mail.
Therefore, it cannot be the list of 51 voters JB provided in the corresponding 
thread [3].

Did the original list survive? Josh?
If not, we can go back in time and run the script again.

-Thilo

[1] https://lists.ffmpeg.org/pipermail/ffmpeg-devel/2020-April/261323.html
[2] https://lists.ffmpeg.org/pipermail/ffmpeg-devel/2020-June/265075.html
[3] https://lists.ffmpeg.org/pipermail/ffmpeg-devel/2023-November/316594.html
___
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] [ANNOUNCE] upcoming vote: extra members for GA

2023-11-09 Thread Anton Khirnov
Quoting Michael Niedermayer (2023-11-09 18:39:23)
> On Thu, Nov 09, 2023 at 06:06:16PM +0100, Anton Khirnov wrote:
> > Quoting Michael Niedermayer (2023-11-09 17:21:12)
> > > On Thu, Nov 09, 2023 at 01:21:13PM +0100, Anton Khirnov wrote:
> > > > As far as I can tell, the voter list in the last vote should be the same
> > > > as the GA from 2020, except for the extra members whose voting rights
> > > > expire after 2 years.
> > > > 
> > > > Do you dispute that? 
> > > 
> > > There are at least 3 issues here
> > > 
> > > * The first and maybe the biggest, is that our vote superviser can reply 
> > > to
> > >   mails within 20min (like in this thread here) but is not replying to a 
> > > simple
> > >   question within days where the list of voters comes from he used and 
> > > how it
> > >   relates to the 2020 GA. It gives one the feeling he has some sort of
> > >   difficulty with awnsering that question
> > >   you took a guess here and replied, and i appreciate that. But really JB
> > >   choose this list and also the one in 2020. Only he can explain where 
> > > these
> > >   lists come from and how they relate.
> > 
> > JB did explain where the list comes from [1] - it was generated by the
> > script that is now in our tree. Nobody disputed it in 2020.
> > 
> > > * I know for a fact that at least zane was not in the 2020 GA as i talked
> > >   with him and i know he did cast a vote in 2023 because again he told me.
> > >   So even if you partially apply the rules these lists do not match
> > 
> > Zane had 30 commits in July 2020, so he SHOULD have been on the list. If
> > he wasn't, then it was a mistake in 2020.
> 
> the 2020 GA list cannot have been created in July 2020 because there where
> votes prior that used it.

According to my mailbox, the vote on extra members was started on
2020-06-18. TC/CC election vote was started on 2020-07-12. Zane had 29
commits as of the former, and 30 as of the latter. In either case he
should have been on the list.

With what you told us so far, it is entirely possible he was on the
original list, but
* misremembered about not receiving the vote link, or
* did not get the email because of delivery issues (we had them even now
  during the first attempt to initiate the vote).

> > 
> > > * The 2nd issue is that there are rules how to change the GA over time
> > >   like that after 2 years there needs to a confirmation AND that the
> > >   other members represent the "active" developers in the last 36 months.
> > >   I can see an argument to leave the 2020 GA untouched and use it as is
> > >   I can also see an argument to update it, and exactly this was done in a
> > >   vote in 2021 by JB. Now we are here trying the 3rd variant of applying
> > >   only half the rules.
> > >   But whats more so, we actually are not. What you are doing here is
> > >   looking at what happened and trying to rationalize it, trying to find
> > >   an explanation for the list. Not stating upfront what this list is
> > >   IMO this is not acceptable for a vote. Uhm we found this list, lets see
> > >   where that might have come from 
> > 
> > To be honest, it very much seems to me that you are trying to bikeshed
> > the process to death. Yes, it is imperfect, but that is to be expected
> > given we've only used it a few times so far, and the last time was over
> > 2 years ago. What we are doing here is trying to clarify the rules so
> > that we actually can vote with some regularity.
> 
> Is it bikesheding if 2 lists that are supposed to be the same differ in
> multiple entries ?

It is the way you are doing it, with all these "just asking questions"
and vague accusations of impropriety.

> these are lists with roughly 50 entries, now we _know_ 2 people differ

We don't. You only mention one, whom I adress above. Who is the second?

> but there where 3 on the extra voters list so really 4 differ almost certainly

I do not understand this math.

> thats roughly 10% of the voters are wrong.
> Thats not bikesheding IMO. We arent talking about 1 voter in hundreads.

Even if this was true (which I don't think is supported by evidence so
far), it's still less than half of the minimum needed to change the
result.

> I do want to know what happened here and want to have this not happen
> again. if i offend people with that investigation then so be it
> 
> 
> > 
> > In the vote we just had, option A won its contests against B/C/D by
> > 17/7, 23/1, and 17/7, respectively. While it is possible that the list
> > used was not entirely correct (also depending on
> > the intepretation of the rules), I see no reason to think it was
> > incorrect in 10 people, which is what you'd need to have a chance of
> > getting a different result.
> 
> Its not just this vote, its that we need to understand what happened here
> so we can prevent this from happening again

What happened is very clear to me. The process was bikeshod to death by
endless discussions and concerns, the script for generating the list was

Re: [FFmpeg-devel] [ANNOUNCE] upcoming vote: extra members for GA

2023-11-09 Thread Cosmin Stejerean via ffmpeg-devel


> On Nov 9, 2023, at 9:53 AM, Rémi Denis-Courmont  wrote:
> 
> The point is that, whether or not they are on the mailing list, people should 
> not be volunteered to the GA by others, but on their own volition. The 
> circumstances are different for those on the mailing list and those not, but 
> the end result is the same: don't nominate people like that. It's rude.

I don't think nominating others for the GA is rude, assuming they accept the 
nomination. I do agree they shouldn't be automatically be put on the GA because 
of a nomination they did not accept, but it seems reasonable to ask them if 
they want to accept the nomination. I do think that being subscribed to the 
mailing list should be a prerequisite however.

- Cosmin
___
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] [ANNOUNCE] upcoming vote: extra members for GA

2023-11-09 Thread Michael Niedermayer
On Thu, Nov 09, 2023 at 07:53:33PM +0200, Rémi Denis-Courmont wrote:
> Le torstaina 9. marraskuuta 2023, 19.41.53 EET Michael Niedermayer a écrit :
[...]
> If you think some people should be added, as far as I am concerned, you are 
> of 
> course welcome to nudge them via private message to friendly remind them that 
> they can nominate themselves.

so what i will do then is
If a developer was in the GA before || are just under the threshold but
active || are part of the infra teams and packaging
i will leave them in the list to be added (that is also what jb suggested)
otherwise
I will contact them and ask if they want to be in the GA and
update the list accordingly, removing everyone who does not reply
[I will not reveal wo said no vs who did not reply just remove if either
 applies]

PS: and i will wait a bit for the current dust to settle first (maybe a day or 
2)

thx

[...]
-- 
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

"You are 36 times more likely to die in a bathtub than at the hands of a
terrorist. Also, you are 2.5 times more likely to become a president and
2 times more likely to become an astronaut, than to die in a terrorist
attack." -- Thoughty2



signature.asc
Description: PGP signature
___
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] [ANNOUNCE] upcoming vote: extra members for GA

2023-11-09 Thread Anton Khirnov
Quoting Michael Niedermayer (2023-11-09 19:15:35)
> On Thu, Nov 09, 2023 at 07:53:33PM +0200, Rémi Denis-Courmont wrote:
> > Le torstaina 9. marraskuuta 2023, 19.41.53 EET Michael Niedermayer a écrit :
> [...]
> > If you think some people should be added, as far as I am concerned, you are 
> > of 
> > course welcome to nudge them via private message to friendly remind them 
> > that 
> > they can nominate themselves.
> 
> so what i will do then is
> If a developer was in the GA before || are just under the threshold but
> active || are part of the infra teams and packaging
> i will leave them in the list to be added (that is also what jb suggested)
> otherwise
> I will contact them and ask if they want to be in the GA and
> update the list accordingly, removing everyone who does not reply
> [I will not reveal wo said no vs who did not reply just remove if either
>  applies]
> 
> PS: and i will wait a bit for the current dust to settle first (maybe a day 
> or 2)

Okay, then we will postpone the vote until Monday 2023-11-20. I will
expect you to submit a list of candidates before then.

-- 
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".


[FFmpeg-devel] [PATCH 1/2] sws/rgb2rgb: rework R-V V YUY2 to 4:2:2 planar

2023-11-09 Thread Rémi Denis-Courmont
This saves three scratch registers and three instructions per line. The
performance gains are mostly negligible. The main point is to free up
registers for further rework.
---
 libswscale/riscv/rgb2rgb_rvv.S | 25 -
 1 file changed, 12 insertions(+), 13 deletions(-)

diff --git a/libswscale/riscv/rgb2rgb_rvv.S b/libswscale/riscv/rgb2rgb_rvv.S
index 671089c842..172f5918dc 100644
--- a/libswscale/riscv/rgb2rgb_rvv.S
+++ b/libswscale/riscv/rgb2rgb_rvv.S
@@ -127,31 +127,30 @@ func ff_deinterleave_bytes_rvv, zve32x
 endfunc
 
 .macro yuy2_to_i422p y_shift
-addia4, a4, 1
+sllit4, a4, 1 // pixel width -> (source) byte width
 lw  t6, (sp)
+sub a6, a6, a4
 sraia4, a4, 1 // pixel width -> chroma width
+sub a7, a7, a4
+sub t6, t6, t4
 1:
 mv  t4, a4
-mv  t3, a3
-mv  t0, a0
-mv  t1, a1
-mv  t2, a2
 addia5, a5, -1
 2:
 vsetvlit5, t4, e8, m2, ta, ma
-vlseg2e16.v v16, (t3)
+vlseg2e16.v v16, (a3)
 subt4, t4, t5
 vnsrl.wi   v24, v16, \y_shift // Y0
-sh2add t3, t5, t3
+sh2add a3, t5, a3
 vnsrl.wi   v26, v20, \y_shift // Y1
 vnsrl.wi   v28, v16, 8 - \y_shift // U
 vnsrl.wi   v30, v20, 8 - \y_shift // V
-vsseg2e8.v v24, (t0)
-sh1add t0, t5, t0
-vse8.v v28, (t1)
-addt1, t5, t1
-vse8.v v30, (t2)
-addt2, t5, t2
+vsseg2e8.v v24, (a0)
+sh1add a0, t5, a0
+vse8.v v28, (a1)
+adda1, t5, a1
+vse8.v v30, (a2)
+adda2, t5, a2
 bnez   t4, 2b
 
 add a3, a3, t6
-- 
2.42.0

___
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".


[FFmpeg-devel] [PATCH 2/2] sws/rgb2rgb: fix unaligned accesses in R-V V YUYV to I422p

2023-11-09 Thread Rémi Denis-Courmont
In my personal opinion, we should not need to support unaligned YUY2
pixel maps. They should always be aligned to at least 32 bits, and the
current code assumes just 16 bits. However checkasm does test for
unaligned input bitmaps. QEMU accepts it, but real hardware dose not.

In this particular case, we can at the same time improve performance and
handle unaligned inputs, so do just that.

uyvytoyuv422_c:  104060.0
uyvytoyuv422_rvv_i32: 25284.0 (before)
uyvytoyuv422_rvv_i32: 20148.2 (after)
---
 libswscale/riscv/rgb2rgb_rvv.S | 45 +-
 1 file changed, 23 insertions(+), 22 deletions(-)

diff --git a/libswscale/riscv/rgb2rgb_rvv.S b/libswscale/riscv/rgb2rgb_rvv.S
index 172f5918dc..716948dc82 100644
--- a/libswscale/riscv/rgb2rgb_rvv.S
+++ b/libswscale/riscv/rgb2rgb_rvv.S
@@ -126,32 +126,33 @@ func ff_deinterleave_bytes_rvv, zve32x
 ret
 endfunc
 
-.macro yuy2_to_i422p y_shift
-sllit4, a4, 1 // pixel width -> (source) byte width
+.macro yuy2_to_i422p luma, chroma
+srait4, a4, 1 // pixel width -> chroma width
 lw  t6, (sp)
+sllit5, a4, 1 // pixel width -> (source) byte width
 sub a6, a6, a4
-sraia4, a4, 1 // pixel width -> chroma width
-sub a7, a7, a4
-sub t6, t6, t4
+sub a7, a7, t4
+sub t6, t6, t5
 1:
 mv  t4, a4
 addia5, a5, -1
 2:
-vsetvlit5, t4, e8, m2, ta, ma
-vlseg2e16.v v16, (a3)
-subt4, t4, t5
-vnsrl.wi   v24, v16, \y_shift // Y0
-sh2add a3, t5, a3
-vnsrl.wi   v26, v20, \y_shift // Y1
-vnsrl.wi   v28, v16, 8 - \y_shift // U
-vnsrl.wi   v30, v20, 8 - \y_shift // V
-vsseg2e8.v v24, (a0)
-sh1add a0, t5, a0
-vse8.v v28, (a1)
-adda1, t5, a1
-vse8.v v30, (a2)
-adda2, t5, a2
-bnez   t4, 2b
+vsetvli t5, t4, e8, m4, ta, ma
+vlseg2e8.v v16, (a3)
+srlit1, t5, 1
+vsetvli zero, t1, e8, m2, ta, ma
+vnsrl.wi   v24, \chroma, 0 // U
+sub t4, t4, t5
+vnsrl.wi   v28, \chroma, 8 // V
+sh1add  a3, t5, a3
+vse8.v  v24, (a1)
+add a1, t1, a1
+vse8.v  v28, (a2)
+add a2, t1, a2
+vsetvli zero, t5, e8, m4, ta, ma
+vse8.v  \luma, (a0)
+add a0, t5, a0
+bnezt4, 2b
 
 add a3, a3, t6
 add a0, a0, a6
@@ -163,9 +164,9 @@ endfunc
 .endm
 
 func ff_uyvytoyuv422_rvv, zve32x
-yuy2_to_i422p 8
+yuy2_to_i422p v20, v16
 endfunc
 
 func ff_yuyvtoyuv422_rvv, zve32x
-yuy2_to_i422p 0
+yuy2_to_i422p v16, v20
 endfunc
-- 
2.42.0

___
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] [ANNOUNCE] upcoming vote: extra members for GA

2023-11-09 Thread Rémi Denis-Courmont
Le torstaina 9. marraskuuta 2023, 20.11.12 EET Cosmin Stejerean via ffmpeg-
devel a écrit :
> > On Nov 9, 2023, at 9:53 AM, Rémi Denis-Courmont  wrote:
> > 
> > The point is that, whether or not they are on the mailing list, people
> > should 
> > not be volunteered to the GA by others, but on their own
> > volition. The circumstances are different for those on the mailing list
> > and those not, but the end result is the same: don't nominate people like
> > that. It's rude.
> 
> I don't think nominating others for the GA is rude, assuming they accept the
> nomination.

Ok, fair enough, it varies. Shy or modest people may find it rude. Others may 
be proud of being nominated. But either way, I find it rude to put people on 
the ballot without their express request to do so.

> I do agree they shouldn't be automatically be put on the GA
> because of a nomination they did not accept, but it seems reasonable to ask
> them if they want to accept the nomination.

Yes.

-- 
Rémi Denis-Courmont
http://www.remlab.net/



___
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] [ANNOUNCE] upcoming vote: extra members for GA

2023-11-09 Thread Martin Storsjö

On Thu, 9 Nov 2023, Michael Niedermayer wrote:


On Thu, Nov 09, 2023 at 07:53:33PM +0200, Rémi Denis-Courmont wrote:

Le torstaina 9. marraskuuta 2023, 19.41.53 EET Michael Niedermayer a écrit :

[...]

If you think some people should be added, as far as I am concerned, you are of
course welcome to nudge them via private message to friendly remind them that
they can nominate themselves.


so what i will do then is
If a developer was in the GA before || are just under the threshold but
active || are part of the infra teams and packaging
i will leave them in the list to be added (that is also what jb suggested)
otherwise
I will contact them and ask if they want to be in the GA and
update the list accordingly, removing everyone who does not reply


Those who you contact and wish to be part of the GA, can they reply 
publicly on the mailing list as well and acknowledge this?


// Martin
___
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] [ANNOUNCE] upcoming vote: extra members for GA

2023-11-09 Thread Michael Niedermayer
On Thu, Nov 09, 2023 at 07:12:24PM +0100, Anton Khirnov wrote:
> Quoting Michael Niedermayer (2023-11-09 18:39:23)
> > On Thu, Nov 09, 2023 at 06:06:16PM +0100, Anton Khirnov wrote:
> > > Quoting Michael Niedermayer (2023-11-09 17:21:12)
> > > > On Thu, Nov 09, 2023 at 01:21:13PM +0100, Anton Khirnov wrote:
> > > > > As far as I can tell, the voter list in the last vote should be the 
> > > > > same
> > > > > as the GA from 2020, except for the extra members whose voting rights
> > > > > expire after 2 years.
> > > > > 
> > > > > Do you dispute that? 
> > > > 
> > > > There are at least 3 issues here
> > > > 
> > > > * The first and maybe the biggest, is that our vote superviser can 
> > > > reply to
> > > >   mails within 20min (like in this thread here) but is not replying to 
> > > > a simple
> > > >   question within days where the list of voters comes from he used and 
> > > > how it
> > > >   relates to the 2020 GA. It gives one the feeling he has some sort of
> > > >   difficulty with awnsering that question
> > > >   you took a guess here and replied, and i appreciate that. But really 
> > > > JB
> > > >   choose this list and also the one in 2020. Only he can explain where 
> > > > these
> > > >   lists come from and how they relate.
> > > 
> > > JB did explain where the list comes from [1] - it was generated by the
> > > script that is now in our tree. Nobody disputed it in 2020.
> > > 
> > > > * I know for a fact that at least zane was not in the 2020 GA as i 
> > > > talked
> > > >   with him and i know he did cast a vote in 2023 because again he told 
> > > > me.
> > > >   So even if you partially apply the rules these lists do not match
> > > 
> > > Zane had 30 commits in July 2020, so he SHOULD have been on the list. If
> > > he wasn't, then it was a mistake in 2020.
> > 
> > the 2020 GA list cannot have been created in July 2020 because there where
> > votes prior that used it.
> 
> According to my mailbox, the vote on extra members was started on
> 2020-06-18. TC/CC election vote was started on 2020-07-12. Zane had 29
> commits as of the former, and 30 as of the latter. In either case he
> should have been on the list.
> 
> With what you told us so far, it is entirely possible he was on the
> original list, but
> * misremembered about not receiving the vote link, or
> * did not get the email because of delivery issues (we had them even now
>   during the first attempt to initiate the vote).

And thats why iam asking questions

If jb says zane was on the original list, then
* did the mail bounce / fail to deliver ?
* did jb see that ?
* there where 3 votes i would think it would be corrected after the first 
bounce
If jb says zane was not on the original list then thats what the current 
evidence suggests IMHO


> 
> > > 
> > > > * The 2nd issue is that there are rules how to change the GA over time
> > > >   like that after 2 years there needs to a confirmation AND that the
> > > >   other members represent the "active" developers in the last 36 months.
> > > >   I can see an argument to leave the 2020 GA untouched and use it as is
> > > >   I can also see an argument to update it, and exactly this was done in 
> > > > a
> > > >   vote in 2021 by JB. Now we are here trying the 3rd variant of applying
> > > >   only half the rules.
> > > >   But whats more so, we actually are not. What you are doing here is
> > > >   looking at what happened and trying to rationalize it, trying to find
> > > >   an explanation for the list. Not stating upfront what this list is
> > > >   IMO this is not acceptable for a vote. Uhm we found this list, lets 
> > > > see
> > > >   where that might have come from 
> > > 
> > > To be honest, it very much seems to me that you are trying to bikeshed
> > > the process to death. Yes, it is imperfect, but that is to be expected
> > > given we've only used it a few times so far, and the last time was over
> > > 2 years ago. What we are doing here is trying to clarify the rules so
> > > that we actually can vote with some regularity.
> > 
> > Is it bikesheding if 2 lists that are supposed to be the same differ in
> > multiple entries ?
> 
> It is the way you are doing it, with all these "just asking questions"
> and vague accusations of impropriety.

I have incomplete information so i need to ask questions.


> 
> > these are lists with roughly 50 entries, now we _know_ 2 people differ
> 
> We don't. You only mention one, whom I adress above. Who is the second?

Alexander Strasser


> 
> > but there where 3 on the extra voters list so really 4 differ almost 
> > certainly
> 
> I do not understand this math.

There where 3 extra developer voted onto the GA and there is zane.
that makes 4
there is also Gautam Ramakrishnan on the posted list who simply did not
have 20 commits at the time of the votes in 2020
thats 5.

You cannot explain this away.
Also Thilo mentioned that the number of voters was 49 without the 3 extra 
members
in the results while the lis

Re: [FFmpeg-devel] [ANNOUNCE] upcoming vote: extra members for GA

2023-11-09 Thread Anton Khirnov
Quoting Michael Niedermayer (2023-11-09 19:50:16)
> > 
> > > these are lists with roughly 50 entries, now we _know_ 2 people differ
> > 
> > We don't. You only mention one, whom I adress above. Who is the second?
> 
> Alexander Strasser

It seems clear that none of the three extra GA members were on the list
used now. In my opinion that is correct, as their voting rights expired
a year ago.

> > 
> > > but there where 3 on the extra voters list so really 4 differ almost 
> > > certainly
> > 
> > I do not understand this math.
> 
> There where 3 extra developer voted onto the GA and there is zane.
> that makes 4
> there is also Gautam Ramakrishnan on the posted list who simply did not
> have 20 commits at the time of the votes in 2020
> thats 5.
> 
> You cannot explain this away.
> Also Thilo mentioned that the number of voters was 49 without the 3 extra 
> members
> in the results while the list jb posted had 51
> 
> These things really dont match no matter how you turn it
> 
> And again thats why iam asking questions.

The problem is, there is nothing meaningful you can do with the answers.
Yes, mistakes were made in 2020. The rules were not defined clearly
enough. The process for generating the list was not formalized. The
lists themselves were not preserved unambiguously, apparently.

Now all that is being rectified. The rules have been clarified. The list
of voters has been published for the last vote, and the intent is to
publish it for all future votes. I intend to update the script after the
next vote, so that the extra GA members are in there and it generates
the actually correct result.

> > We don't need to "understand what happened",
> 
> We do need to understand what happened. The whole project depends on the 
> decissions
> of teh GA. This is not a joke, this is not something where we can be not sure
> who was on the voter list

But we are sure who was on the list, it was published. Not to mention
you have root access to the server, you can just look at the email logs
if you have any doubts.

So what is the point of all this? Besides creating a situation where
voting is too hard, so we never do it, as was the case for the past 2
years.

-- 
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] [ANNOUNCE] upcoming vote: extra members for GA

2023-11-09 Thread Jean-Baptiste Kempf


On Thu, 9 Nov 2023, at 19:15, Michael Niedermayer wrote:
> On Thu, Nov 09, 2023 at 07:53:33PM +0200, Rémi Denis-Courmont wrote:
>> Le torstaina 9. marraskuuta 2023, 19.41.53 EET Michael Niedermayer a écrit :
> [...]
>> If you think some people should be added, as far as I am concerned, you are 
>> of 
>> course welcome to nudge them via private message to friendly remind them 
>> that 
>> they can nominate themselves.
>
> so what i will do then is
> If a developer was in the GA before || are just under the threshold but
> active || are part of the infra teams and packaging
> i will leave them in the list to be added (that is also what jb suggested)

Of course, this seems reasonable.

> I will contact them and ask if they want to be in the GA and

You should contact who you want, or think is necessary.
But they should step forward and say so publicly that they are candidates.

-- 
Jean-Baptiste Kempf -  President
+33 672 704 734
___
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 2/2] sws/rgb2rgb: fix unaligned accesses in R-V V YUYV to I422p

2023-11-09 Thread Rémi Denis-Courmont
Le torstaina 9. marraskuuta 2023, 20.34.53 EET Rémi Denis-Courmont a écrit :
> In my personal opinion, we should not need to support unaligned YUY2
> pixel maps. They should always be aligned to at least 32 bits, and the
> current code assumes just 16 bits. However checkasm does test for
> unaligned input bitmaps. QEMU accepts it, but real hardware dose not.
> 
> In this particular case, we can at the same time improve performance and
> handle unaligned inputs, so do just that.
> 
> uyvytoyuv422_c:  104060.0
> uyvytoyuv422_rvv_i32: 25284.0 (before)
> uyvytoyuv422_rvv_i32: 20148.2 (after)
> ---
>  libswscale/riscv/rgb2rgb_rvv.S | 45 +-
>  1 file changed, 23 insertions(+), 22 deletions(-)
> 
> diff --git a/libswscale/riscv/rgb2rgb_rvv.S b/libswscale/riscv/rgb2rgb_rvv.S
> index 172f5918dc..716948dc82 100644
> --- a/libswscale/riscv/rgb2rgb_rvv.S
> +++ b/libswscale/riscv/rgb2rgb_rvv.S
> @@ -126,32 +126,33 @@ func ff_deinterleave_bytes_rvv, zve32x
>  ret
>  endfunc
> 
> -.macro yuy2_to_i422p y_shift
> -sllit4, a4, 1 // pixel width -> (source) byte width
> +.macro yuy2_to_i422p luma, chroma
> +srait4, a4, 1 // pixel width -> chroma width
>  lw  t6, (sp)
> +sllit5, a4, 1 // pixel width -> (source) byte width
>  sub a6, a6, a4
> -sraia4, a4, 1 // pixel width -> chroma width
> -sub a7, a7, a4
> -sub t6, t6, t4
> +sub a7, a7, t4
> +sub t6, t6, t5
>  1:
>  mv  t4, a4
>  addia5, a5, -1
>  2:
> -vsetvlit5, t4, e8, m2, ta, ma
> -vlseg2e16.v v16, (a3)
> -subt4, t4, t5
> -vnsrl.wi   v24, v16, \y_shift // Y0
> -sh2add a3, t5, a3
> -vnsrl.wi   v26, v20, \y_shift // Y1
> -vnsrl.wi   v28, v16, 8 - \y_shift // U
> -vnsrl.wi   v30, v20, 8 - \y_shift // V
> -vsseg2e8.v v24, (a0)
> -sh1add a0, t5, a0
> -vse8.v v28, (a1)
> -adda1, t5, a1
> -vse8.v v30, (a2)
> -adda2, t5, a2
> -bnez   t4, 2b
> +vsetvli t5, t4, e8, m4, ta, ma
> +vlseg2e8.v v16, (a3)
> +srlit1, t5, 1

Due to the specifications of RVV, we cannot assume that on the penultimate loop 
iteration, the selected vector length (t5) will be even. If it is odd, then 
this won't work. The test hardware always picks the maximum possible, which is 
always even, but...

This needs special handling :(

> +vsetvli zero, t1, e8, m2, ta, ma
> +vnsrl.wi   v24, \chroma, 0 // U
> +sub t4, t4, t5
> +vnsrl.wi   v28, \chroma, 8 // V
> +sh1add  a3, t5, a3
> +vse8.v  v24, (a1)
> +add a1, t1, a1
> +vse8.v  v28, (a2)
> +add a2, t1, a2
> +vsetvli zero, t5, e8, m4, ta, ma
> +vse8.v  \luma, (a0)
> +add a0, t5, a0
> +bnezt4, 2b
> 
>  add a3, a3, t6
>  add a0, a0, a6
> @@ -163,9 +164,9 @@ endfunc
>  .endm
> 
>  func ff_uyvytoyuv422_rvv, zve32x
> -yuy2_to_i422p 8
> +yuy2_to_i422p v20, v16
>  endfunc
> 
>  func ff_yuyvtoyuv422_rvv, zve32x
> -yuy2_to_i422p 0
> +yuy2_to_i422p v16, v20
>  endfunc


-- 
Rémi Denis-Courmont
http://www.remlab.net/



___
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] [ANNOUNCE] upcoming vote: extra members for GA

2023-11-09 Thread Michael Niedermayer
On Thu, Nov 09, 2023 at 08:30:15PM +0100, Jean-Baptiste Kempf wrote:
> 
> 
> On Thu, 9 Nov 2023, at 19:15, Michael Niedermayer wrote:
> > On Thu, Nov 09, 2023 at 07:53:33PM +0200, Rémi Denis-Courmont wrote:
> >> Le torstaina 9. marraskuuta 2023, 19.41.53 EET Michael Niedermayer a écrit 
> >> :
> > [...]
> >> If you think some people should be added, as far as I am concerned, you 
> >> are of 
> >> course welcome to nudge them via private message to friendly remind them 
> >> that 
> >> they can nominate themselves.
> >
> > so what i will do then is
> > If a developer was in the GA before || are just under the threshold but
> > active || are part of the infra teams and packaging
> > i will leave them in the list to be added (that is also what jb suggested)
> 
> Of course, this seems reasonable.
> 
> > I will contact them and ask if they want to be in the GA and
> 
> You should contact who you want, or think is necessary.



> But they should step forward and say so publicly that they are candidates.

I think this is asking too much and it is unfair. We are not in any other
case demanding that people announce themselfs infront of everyone for
anything. Not for joining the mailing list, Not for anything else.
Especially not for having vote rights.

thx

[...]
-- 
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

The real ebay dictionary, page 1
"Used only once"- "Some unspecified defect prevented a second use"
"In good condition" - "Can be repaird by experienced expert"
"As is" - "You wouldnt want it even if you were payed for it, if you knew ..."


signature.asc
Description: PGP signature
___
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".


[FFmpeg-devel] [PATCH] checkasm: test with random bw value

2023-11-09 Thread Rémi Denis-Courmont
With a value of zero, the function is a glorified memory copy.
---
 tests/checkasm/sbrdsp.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tests/checkasm/sbrdsp.c b/tests/checkasm/sbrdsp.c
index 2fb14d5bf8..5cc3b33215 100644
--- a/tests/checkasm/sbrdsp.c
+++ b/tests/checkasm/sbrdsp.c
@@ -190,8 +190,8 @@ static void test_hf_gen(void)
 for (i = 2; i < 64; i += 2) {
 memset(dst0, 0, 128 * 2 * sizeof(INTFLOAT));
 memset(dst1, 0, 128 * 2 * sizeof(INTFLOAT));
-call_ref(dst0, low, alpha0, alpha1, 0.0, i, 128);
-call_new(dst1, low, alpha0, alpha1, 0.0, i, 128);
+call_ref(dst0, low, alpha0, alpha1, bw, i, 128);
+call_new(dst1, low, alpha0, alpha1, bw, i, 128);
 if (!float_near_abs_eps_array((INTFLOAT *)dst0, (INTFLOAT *)dst1, EPS, 
128 * 2))
 fail();
 bench_new(dst1, low, alpha0, alpha1, bw, i, 128);
-- 
2.42.0

___
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] [ANNOUNCE] upcoming vote: extra members for GA

2023-11-09 Thread Anton Khirnov
Quoting Michael Niedermayer (2023-11-09 21:17:34)
> Not for anything else. Especially not for having vote rights.

Getting vote rights requires one to submit patches publicly.

-- 
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] avcodec/mpegvideo: Remove spec-incompliant inverse quantisation

2023-11-09 Thread Alexander Strasser
On 2023-11-09 11:13 +0100, Anton Khirnov wrote:
> Quoting Alexander Strasser (2023-11-08 21:55:10)
> > On 2023-11-08 12:40 +0100, Anton Khirnov wrote:
> > > Quoting Michael Niedermayer (2023-10-31 09:40:44)
> > > > On Mon, Oct 30, 2023 at 02:11:27PM +0100, Andreas Rheinhardt wrote:
> > > > > Section 7.4.4 of the MPEG-2 specifications requires that the
> > > > > last bit of the last coefficient be toggled so that the sum
> > > > > of all coefficients is odd; both our decoder and encoder
> > > > > did this only if the bitexact flag has been set (although
> > > > > stuff like this should be behind AV_CODEC_FLAG2_FAST).
> > > > > This patch changes this by removing the spec-incompliant
> > > > > functions.
> > > >
> > > > This commit message should include benchamarks documenting the speed 
> > > > loss
> > > > (of the unquantize, the IDCT and overall)
> > > > It is expected that the speed of some IDCTs will be impacted negativly
> > > > as the non zero terms will prevent the skiping of some significant code
> > > >
> > > > as well as information about how much PSNR improves (to the encoder 
> > > > input)
> > > >
> > > > Also the change is a +-1 in one spot before the IDCT, the IDCT is not 
> > > > bitexactly
> > > > specified in MPEG-2 so one could think of this as a
> > > > correct implementation followed by a IDCT that was sometimes +-1 off
> > > > instead of spec non compliance
> > > >
> > > > Only after the benchmarks and PSNR is presented should we decide if this
> > > > is a change we want
> > >
> > > I disagree that the burden of proof should be on Andreas here. It should
> > > be up to whoever wants to keep this code to show that it is useful.
> >
> > There was an argument presented.
>
> I see no argument for why the code in question is useful, can you point
> to the exact text?

First this:

> > > > It is expected that the speed of some IDCTs will be impacted negativly
> > > > as the non zero terms will prevent the skiping of some significant code

Second there was an argument for compliance:

> > > > Also the change is a +-1 in one spot before the IDCT, the IDCT is not 
> > > > bitexactly
> > > > specified in MPEG-2 so one could think of this as a
> > > > correct implementation followed by a IDCT that was sometimes +-1 off
> > > > instead of spec non compliance

Third there was no rejection of the change, but a request for
measurement of the effect. I would expect an approval of the patch
if the measurement leads to insignificant enough results.


> > That argument could be challenged or otherwise explained why it more
> > important to have this always behave like with bitexact.
> >
> > This could lead to "OK, I think removal is better" or if not benchmarks
> > could lead to one or the other decision.
> >
> > Saying the burden is on whoever wants to keep the code sounds like a way
> > for arbitrary code removal. While I agree getting rid of code can be a good
> > thing, this would definitely take it too far.
>
> All code is a maintenance burden, therefore all code should have a
> reason for its presence in the codebase, otherwise it should be removed.

I can't see how the reason for the presence of code can be ultimately
defined objectively and non-arbitrary.


  Alexander
___
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] avcodec/mpegvideo: Remove spec-incompliant inverse quantisation

2023-11-09 Thread Alexander Strasser
On 2023-11-08 17:58 -0500, Vittorio Giovara wrote:
> On Wed, Nov 8, 2023 at 3:46 PM Alexander Strasser  wrote:
>
> > On 2023-11-08 12:40 +0100, Anton Khirnov wrote:
> > > Quoting Michael Niedermayer (2023-10-31 09:40:44)
> > > > On Mon, Oct 30, 2023 at 02:11:27PM +0100, Andreas Rheinhardt wrote:
> > > > > Section 7.4.4 of the MPEG-2 specifications requires that the
> > > > > last bit of the last coefficient be toggled so that the sum
> > > > > of all coefficients is odd; both our decoder and encoder
> > > > > did this only if the bitexact flag has been set (although
> > > > > stuff like this should be behind AV_CODEC_FLAG2_FAST).
> > > > > This patch changes this by removing the spec-incompliant
> > > > > functions.
> > > >
> > > > This commit message should include benchamarks documenting the speed
> > loss
> > > > (of the unquantize, the IDCT and overall)
> > > > It is expected that the speed of some IDCTs will be impacted negativly
> > > > as the non zero terms will prevent the skiping of some significant code
> > > >
> > > > as well as information about how much PSNR improves (to the encoder
> > input)
> > > >
> > > > Also the change is a +-1 in one spot before the IDCT, the IDCT is not
> > bitexactly
> > > > specified in MPEG-2 so one could think of this as a
> > > > correct implementation followed by a IDCT that was sometimes +-1 off
> > > > instead of spec non compliance
> > > >
> > > > Only after the benchmarks and PSNR is presented should we decide if
> > this
> > > > is a change we want
> > >
> > > I disagree that the burden of proof should be on Andreas here. It should
> > > be up to whoever wants to keep this code to show that it is useful.
> >
> > There was an argument presented.
> >
> > That argument could be challenged or otherwise explained why it more
> > important to have this always behave like with bitexact.
> >
> > This could lead to "OK, I think removal is better" or if not benchmarks
> > could lead to one or the other decision.
> >
> > Saying the burden is on whoever wants to keep the code sounds like a way
> > for arbitrary code removal. While I agree getting rid of code can be a good
> > thing, this would definitely take it too far.
> >
>
> To be fair, this is noncompliant spec code, it shouldn't be present at all
> since it produces inconsistent results (with the spec) and there is no
> device particularly needing this functionality.It's not arbitrary code
> removal, it's removing something that is not needed any more since the
> speed impact (pro or against) is negligible on modern computers.

Please see the reply to Anton. I hope it's clearer now what I meant.


> I'm of the opinion that presenting an argument against such a targeted and
> specific code removal with no supportive use case should be noted but not
> acted upon, until relevant proof is brought over. Yes sadly that burden
> should fall on whoever is presenting the argument.

I wouid disagree in general.

Maybe this case is more special (targeted and specific?) then my
current understanding of the matter. IIUC the leading reason for
this patch is removing the code because of spec incompliance which
I think is not so clear and could be argued both ways.


  Alexander
___
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] avcodec/mpegvideo: Remove spec-incompliant inverse quantisation

2023-11-09 Thread Rémi Denis-Courmont
Le torstaina 9. marraskuuta 2023, 22.45.35 EET Alexander Strasser a écrit :
> I can't see how the reason for the presence of code can be ultimately
> defined objectively and non-arbitrary.

Ultimately, this was discussed and decided in a meeting, which Michael 
attended (albeit remotely) and for which meeting notes were published.

That being the case, I don't see why Andreas should have to perform extensive 
testing and write extensive justification. He could have done and that would 
have been nice, but that is all.

In this situation, it is up to whoever disagrees (and presumably was not in 
the meeting) to provide extensive justification why the decision should be 
reversed. And I'm not seeing any such thing.

Also anything to shrink the amount of MMX code Looks Good To Me.

-- 
雷米‧德尼-库尔蒙
http://www.remlab.net/



___
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".


[FFmpeg-devel] [PATCH] lavc/sbrdsp: R-V V hf_gen

2023-11-09 Thread Rémi Denis-Courmont
hf_gen_c:  2922.7
hf_gen_rvv_f32: 731.5
---
 libavcodec/riscv/sbrdsp_init.c |  4 +++
 libavcodec/riscv/sbrdsp_rvv.S  | 50 ++
 2 files changed, 54 insertions(+)

diff --git a/libavcodec/riscv/sbrdsp_init.c b/libavcodec/riscv/sbrdsp_init.c
index c1ed5b639c..e5736452ec 100644
--- a/libavcodec/riscv/sbrdsp_init.c
+++ b/libavcodec/riscv/sbrdsp_init.c
@@ -27,6 +27,9 @@ void ff_sbr_sum64x5_rvv(float *z);
 float ff_sbr_sum_square_rvv(float (*x)[2], int n);
 void ff_sbr_neg_odd_64_rvv(float *x);
 void ff_sbr_autocorrelate_rvv(const float x[40][2], float phi[3][2][2]);
+void ff_sbr_hf_gen_rvv(float (*X_high)[2], const float (*X_low)[2],
+   const float alpha0[2], const float alpha1[2],
+   float bw, int start, int end);
 void ff_sbr_hf_g_filt_rvv(float (*Y)[2], const float (*X_high)[40][2],
   const float *g_filt, int m_max, intptr_t ixh);
 
@@ -39,6 +42,7 @@ av_cold void ff_sbrdsp_init_riscv(SBRDSPContext *c)
 if (flags & AV_CPU_FLAG_RVB_ADDR) {
 c->sum64x5 = ff_sbr_sum64x5_rvv;
 c->sum_square = ff_sbr_sum_square_rvv;
+c->hf_gen = ff_sbr_hf_gen_rvv;
 c->hf_g_filt = ff_sbr_hf_g_filt_rvv;
 }
 c->autocorrelate = ff_sbr_autocorrelate_rvv;
diff --git a/libavcodec/riscv/sbrdsp_rvv.S b/libavcodec/riscv/sbrdsp_rvv.S
index 2f3a0969d7..43fab1f65f 100644
--- a/libavcodec/riscv/sbrdsp_rvv.S
+++ b/libavcodec/riscv/sbrdsp_rvv.S
@@ -174,6 +174,56 @@ func ff_sbr_autocorrelate_rvv, zve32f
 ret
 endfunc
 
+func ff_sbr_hf_gen_rvv, zve32f
+NOHWF   fmv.w.x fa0, a4
+NOHWF   mv  a4, a5
+NOHWF   mv  a5, a6
+flw ft2, 0(a2)
+fmul.s  fa1, fa0, fa0 // bw * bw
+sh3add  a1, a5, a1
+flw ft3, 4(a2)
+fmul.s  fa2, ft2, fa0 // alpha[2]
+sh3add  a0, a5, a0
+flw ft0, 0(a3)
+fmul.s  fa3, ft3, fa0 // alpha[3]
+sub a5, a5, a4
+flw ft1, 4(a3)
+fmul.s  fa0, ft0, fa1 // alpha[0]
+flw ft0, -16(a1)  // X_low[end - 2][0]
+fmul.s  fa1, ft1, fa1 // alpha[1]
+flw ft1, -12(a1)  // X_low[end - 2][1]
+flw ft2,  -8(a1)  // X_low[end - 1][0]
+flw ft3,  -4(a1)  // X_low[end - 1][1]
+addia1, a1, -16
+1:
+vsetvli t0, a5, e32, m4, ta, ma
+sllit1, t0, 3
+sub a1, a1, t1
+vlseg2e32.v v0, (a1)  // X_low[i - 2]
+sub a0, a0, t1
+vfslide1down.vf v8, v0, ft0   // X_low[i - 1][0]
+sub a5, a5, t0
+vfslide1down.vf v12, v4, ft1  // X_low[i - 1][1]
+vfslide1down.vf v16, v8, ft2  // X_low[i][0]
+vfslide1down.vf v20, v12, ft3 // X_low[i][1]
+vfmacc.vf v16, fa0, v0
+vfmacc.vf v20, fa0, v4
+vfmv.f.s ft0, v0
+vfnmsac.vf v16, fa1, v4
+vfmacc.vf v20, fa1, v0
+vfmv.f.s ft1, v4
+vfmacc.vf v16, fa2, v8
+vfmacc.vf v20, fa2, v12
+vfmv.f.s ft2, v8
+vfnmsac.vf v16, fa3, v12
+vfmacc.vf v20, fa3, v8
+vfmv.f.s ft3, v12
+vsseg2e32.v v16, (a0)
+bneza5, 1b
+
+ret
+endfunc
+
 func ff_sbr_hf_g_filt_rvv, zve32f
 li  t1, 40 * 2 * 4
 sh3add  a1, a4, a1
-- 
2.42.0

___
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] [ANN] Poll Results: GA voters list updates

2023-11-09 Thread Alexander Strasser
Hi Anton!

On 2023-11-09 13:15 +0100, Anton Khirnov wrote:
> Quoting Alexander Strasser (2023-11-06 16:56:55)
> > On 2023-11-06 07:10 +0100, Jean-Baptiste Kempf wrote:
> > > Yo,
> > >
> > > Time is up, results are here:
> > > https://vote.ffmpeg.org/cgi-bin/civs/results.pl?id=E_029f7195fed7aadf
> >
> > Should I have been mailed about this vote?
> >
> > I'm pretty sure I could vote in 2020. Or am I just missing something?
>
> As per the rules:
> > Additional members are added to the General Assembly through a vote
> > after proposal by a member of the General Assembly. They are part of
> > the GA for two years, after which they need a confirmation by the GA.
>
> your voting rights expired after 2 years and were not renewed, since
> nobody organized a new vote.

Interesting. That could be the reason why I was left out. Not sure
it completely fits to the information so far. In any way it's worth
pointing out. Thanks.


What I don't understand:

> after which they need a confirmation by the GA

1. Does that mean all additional members drop out and need a
   confirmation by the remaining GA?

2. What does it exactly mean to need an confirmation?
   Does each additional member need to ask for a confirmation
   after 2 years?

   Or should there be a GA vote, every 2 years, for all
   additional members that would be dropped (after asking them
   if they want to stay in the GA)?

3. In which way is point 2 to be co-ordinated with new votes
   after 2 years?

The text you quoted (according to my Git archaeology it wasn't
changed; only reformatted) is unfortunately a bit ambiguous and
unclear :(


Best regards,
  Alexander
___
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 08/24] fftools/ffmpeg_filter: remove an unnecessary sub2video_push_ref() call

2023-11-09 Thread Anton Khirnov
Quoting Nicolas George (2023-11-09 11:47:23)
> Anton Khirnov (12023-11-09):
> > The problem with that code (and the reason this patch exists), is that
> > it depends on the order in which the frames arrive on filtergraph
> > inputs, which is not meaningful (and becomes non-deterministic with
> > threading).
> 
> I can understand that. We will have to find a solution, won't we? (I
> hope you do not consider removing a feature that people have been using
> for years an option.)

I am obviously not proposing that, given the amount of patches I sent so
far to keep sub2video working.

> I can suggest this: have demuxer code emit virtual subtitles packets to
> trigger the sending of the heartbeat frames.

That's what already happens, unless I misunderstand what you mean.

Another possibility is to make the call independently of the state of
the graph, like this
--- a/fftools/ffmpeg_filter.c
+++ b/fftools/ffmpeg_filter.c
@@ -2274,8 +2274,7 @@ void ifilter_sub2video_heartbeat(InputFilter *ifilter, 
int64_t pts, AVRational t
or if we need to initialize the system, update the
overlayed subpicture and its start/end times */
 sub2video_update(ifp, pts2 + 1, NULL);
-
-if (av_buffersrc_get_nb_failed_requests(ifp->filter))
+else
 sub2video_push_ref(ifp, pts2);
 }


This actually seems to improve filter-overlay-dvdsub-2397, where
the first subtitle appears two frames later, which more closely matches
the subtitles timestamp stored in the file.

-- 
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] checkasm: test with random bw value

2023-11-09 Thread Martin Storsjö

On Thu, 9 Nov 2023, Rémi Denis-Courmont wrote:


With a value of zero, the function is a glorified memory copy.
---
tests/checkasm/sbrdsp.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tests/checkasm/sbrdsp.c b/tests/checkasm/sbrdsp.c
index 2fb14d5bf8..5cc3b33215 100644
--- a/tests/checkasm/sbrdsp.c
+++ b/tests/checkasm/sbrdsp.c
@@ -190,8 +190,8 @@ static void test_hf_gen(void)
for (i = 2; i < 64; i += 2) {
memset(dst0, 0, 128 * 2 * sizeof(INTFLOAT));
memset(dst1, 0, 128 * 2 * sizeof(INTFLOAT));
-call_ref(dst0, low, alpha0, alpha1, 0.0, i, 128);
-call_new(dst1, low, alpha0, alpha1, 0.0, i, 128);
+call_ref(dst0, low, alpha0, alpha1, bw, i, 128);
+call_new(dst1, low, alpha0, alpha1, bw, i, 128);
if (!float_near_abs_eps_array((INTFLOAT *)dst0, (INTFLOAT *)dst1, EPS, 
128 * 2))
fail();
bench_new(dst1, low, alpha0, alpha1, bw, i, 128);
--
2.42.0


LGTM, also tested on i386, x86_64, armv7 and aarch64.

// Martin
___
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] [ANNOUNCE] upcoming vote: extra members for GA

2023-11-09 Thread Alexander Strasser
On 2023-11-09 12:55 +0100, Michael Niedermayer wrote:
> On Thu, Nov 09, 2023 at 10:44:12AM +0100, Anton Khirnov wrote:
> > As nobody expressed a preference, the vote will start next Monday
> > (2023-11-13). It should run for a week, and will be followed by TC/CC
> > elections.
> >
> > The only extra GA candidate I see proposed so far is Ronald. If anyone
> > wants to suggest further people, please do so in this thread ASAP.
>
> IMHO the question of the relation of the list of people who could vote
> in the last GA vote and the people who where in the general assembly
> in 2020 should be awnsered before further votes.
> https://lists.ffmpeg.org/pipermail/ffmpeg-devel/2023-November/316609.html
>
> If the current GA stays as it is, then i propose the following people
> (this list was quickly made and certainly has omisions and possibly errors,
> check anything thats important to you!)
>
> The presumed 2020 General assembly as well as people who have subtantial
> contributions over the lifetime of the project where the source of this list
>
> Fabrice Bellard(Founder of the project over 600 commits in FFmpeg)
> Aman Karmani   (17 authored commits in 2020-2023, recently active in 
> 2023-June and work all over the codebase)
> Baptiste Coudurier (Pays for our fate server since forever, maintains 15 
> things in MAINTAINERs, is the the copyright of 56 files, over 1900 commits in 
> FFmpeg)
> Moritz Barsnick(Member of the 2020 GA but was not on jbs list)
> Lauri Kasanen  (Linux / PowerPC maintainer)
> Dale Curtis(14 commits in 2020 was in the 2020-GA)


> Alexander Strasser (Root admin, just recently reported that he could not vote 
> even though he was in teh 2020-GA, 3 things in MAINTAINERs)

I want to be an additional (extra) member in the GA.

I have
* commits in FFmpeg and reviewed patches (authored myself and applied for 
others)
* spent time and effort in discussions on the mailing lists, issue trackers and 
IRC channels
* admin rights to some infra structure of the project

I also took part and helped organize FFmpeg representation in quite some FOSS
conferences in Germany. Also was a few times at VDD.

My first contact to the general multimedia community was around 2000.
The first interaction with open source multimedia projects was around
2004.

In the recent times I have not participated on the MLs (and IRC) much
as I don't have much spare time after work.

I'm hoping to continue supporting the project and help it stay alive
and as awesome as it has been already over the many years since it
took off.


Thanks for your consideration,
  Alexander Strasser


> foo86  (maintainer and author of dca*, dolby_e*, dtsdec, s337m)
> Huiwen Ren (8 matches in the codebase of his name, avs2* and related 
> things maintainer)
> Martin Vignali (over 200 commits in FFmpeg, left in 2019 because of 
> hostility)
> Lou Logan  (over 100 commits in FFmpeg, left in 2020, also in the 
> 2020-GA but not on jbs list)
> Matthieu Bouron(over 200 commits in FFmpeg, recently active in 2022, 5 
> entries in MAINTAINERs, 25 in copyrights)
> Ruiling Song   (vf_tonemap_opencl maintainer, added SIMD code to various 
> bits of code, last active in git in 2020)
> John Stebbins  (over 100 commits in FFmpeg, last active in git in 2020, 1 
> copyright match)
> Ting Fu(last active in April 2023, 24 commits in 2021-2023, )
> Tobias Rapp(vf_readvitc mainatiner, last commit in Jul 2023, 88 
> commits in FFmpeg)
> Shiyou Yin (MIPS & LoongArch maintainer, 24 matches for his name in 
> the source, last commit May 2023)
> Reimar Döffinger   (over 1400 commits in FFmpeg, root admin and last commit 
> in Oct 2023, 49 matches for his name in the codebase)
> Aurelien Jacobs(over 1000 commits in FFmpeg, 13 entries in MAINTAINERs, 
> 70 copyright line matches)
> Hendrik Leppkes(over 900 commits in FFmpeg, 2 entries in MAINTAINERs, 4 
> copyrights, last commit in Jul 2023)
> Vitor Sessak   (over 900 commits in FFmpeg, 28 copyright matches)
> Kostya Shishkov(over 900 commits in FFmpeg, 162 copyright matches)
> Ramiro Polla   (over 600 commits in FFmpeg, 5 matches in MAINTAINERs, 22 
> copyright matches)
> Alex Converse  (over 500 commits in FFmpeg, 32 copyright matches)
> Janne Grunau   (over 500 commits in FFmpeg, 24 copyright matches)
> Andreas Cadhalpun  (over 400 commits in FFmpeg, 2 copyright matches)
___
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".


[FFmpeg-devel] [PATCH] web: add release notes for version 6.1

2023-11-09 Thread Lynne
Contents:

+  November 10th, 2023, FFmpeg 6.1 "Heaviside"
+  
+    FFmpeg 6.1 "Heaviside", a new
+    major release, is now available! Some of the highlights:
+  
+  
+    libaribcaption decoder
+    Playdate video decoder and demuxer
+    Extend VAAPI support for libva-win32 on Windows
+    afireqsrc audio source filter
+    arls filter
+    ffmpeg CLI new option: -readrate_initial_burst
+    zoneplate video source filter
+    command support in the setpts and asetpts filters
+    Vulkan decode hwaccel, supporting H264, HEVC and AV1
+    color_vulkan filter
+    bwdif_vulkan filter
+    nlmeans_vulkan filter
+    RivaTuner video decoder
+    xfade_vulkan filter
+    vMix video decoder
+    Essential Video Coding parser, muxer and demuxer
+    Essential Video Coding frame merge bsf
+    bwdif_cuda filter
+    Microsoft RLE video encoder
+    Raw AC-4 muxer and demuxer
+    Raw VVC bitstream parser, muxer and demuxer
+    Bitstream filter for editing metadata in VVC streams
+    Bitstream filter for converting VVC from MP4 to Annex B
+    scale_vt filter for videotoolbox
+    transpose_vt filter for videotoolbox
+    support for the P_SKIP hinting to speed up libx264 encoding
+    Support HEVC,VP9,AV1 codec in enhanced flv format
+    apsnr and asisdr audio filters
+    OSQ demuxer and decoder
+    Support HEVC,VP9,AV1 codec fourcclist in enhanced rtmp protocol
+    CRI USM demuxer
+    ffmpeg CLI '-top' option deprecated in favor of the setfield 
filter
+    VAAPI AV1 encoder
+    ffprobe XML output schema changed to account for multiple 
variable-fields elements within the same parent element
+    ffprobe -output_format option added as an alias of -of
+  
+  
+    This release had been overdue for at least half a year, but due to 
constant activity in the repository,
+    had to be delayed, and we were finally able to branch off the release 
recently, before some of the large
+    changes scheduled for 7.0 were merged.
+  
+  
+    Internally, we have had a number of changes too. The FFT, MDCT, DCT and 
DST implementation used for codecs
+    and filters has been fully replaced with the faster libavutil/tx (full 
article about it coming soon).
+    This also led to a reduction in the the size of the compiled binary, which 
can be noticeable in small builds.
+    There was a very large reduction in the total amount of allocations being 
done on each frame throughout video decoders,
+    reducing overhead.
+    RISC-V optimizations for many parts of our DSP code have been merged, with 
mainly the large decoders being left.
+    There was an effort to improve the correctness of timestamps and frame 
durations of each packet, increasing the
+    accurracy of variable frame rate video.
+  
+  
+    Next major release will be version 7.0, scheduled to be released in 
February. We will attempt to better stick
+    to the new release schedule we announced at the start of this year.
+  
+  
+    We strongly recommend users, distributors, and system integrators to 
upgrade unless they use current git master.
+  

I hope I didn't forget to mention anything else that was notable.
Attached.

>From 6c00a9f3294d40b0c254ca484e171fce3e5a07fe Mon Sep 17 00:00:00 2001
From: Lynne 
Date: Thu, 9 Nov 2023 22:50:47 +0100
Subject: [PATCH] web: add release notes for version 6.1

---
 src/index | 65 +++
 1 file changed, 65 insertions(+)

diff --git a/src/index b/src/index
index 5d469e0..0d68db5 100644
--- a/src/index
+++ b/src/index
@@ -35,6 +35,71 @@
 News
   
 
+  November 10th, 2023, FFmpeg 6.1 "Heaviside"
+  
+FFmpeg 6.1 "Heaviside", a new
+major release, is now available! Some of the highlights:
+  
+  
+libaribcaption decoder
+Playdate video decoder and demuxer
+Extend VAAPI support for libva-win32 on Windows
+afireqsrc audio source filter
+arls filter
+ffmpeg CLI new option: -readrate_initial_burst
+zoneplate video source filter
+command support in the setpts and asetpts filters
+Vulkan decode hwaccel, supporting H264, HEVC and AV1
+color_vulkan filter
+bwdif_vulkan filter
+nlmeans_vulkan filter
+RivaTuner video decoder
+xfade_vulkan filter
+vMix video decoder
+Essential Video Coding parser, muxer and demuxer
+Essential Video Coding frame merge bsf
+bwdif_cuda filter
+Microsoft RLE video encoder
+Raw AC-4 muxer and demuxer
+Raw VVC bitstream parser, muxer and demuxer
+Bitstream filter for editing metadata in VVC streams
+Bitstream filter for converting VVC from MP4 to Annex B
+scale_vt filter for videotoolbox
+transpose_vt filter for videotoolbox
+support for the P_SKIP hinting to speed up libx264 encoding
+Support HEVC,VP9,AV1 codec in enhanced flv format
+apsnr and asisdr audio filters
+OSQ demuxer and decoder
+Support HEVC,VP9,AV1 codec fourcclist in enhanced rtmp protocol
+CRI USM demuxer
+ffmpeg CLI '-top' option deprecated in fav

Re: [FFmpeg-devel] [ANNOUNCE] upcoming vote: extra members for GA

2023-11-09 Thread Michael Niedermayer
On Thu, Nov 09, 2023 at 08:15:33PM +0100, Anton Khirnov wrote:
> Quoting Michael Niedermayer (2023-11-09 19:50:16)
> > > 
> > > > these are lists with roughly 50 entries, now we _know_ 2 people differ
> > > 
> > > We don't. You only mention one, whom I adress above. Who is the second?
> > 
> > Alexander Strasser
> 
> It seems clear that none of the three extra GA members were on the list
> used now. In my opinion that is correct, as their voting rights expired
> a year ago.
> 
> > > 
> > > > but there where 3 on the extra voters list so really 4 differ almost 
> > > > certainly
> > > 
> > > I do not understand this math.
> > 
> > There where 3 extra developer voted onto the GA and there is zane.
> > that makes 4
> > there is also Gautam Ramakrishnan on the posted list who simply did not
> > have 20 commits at the time of the votes in 2020
> > thats 5.
> > 
> > You cannot explain this away.
> > Also Thilo mentioned that the number of voters was 49 without the 3 extra 
> > members
> > in the results while the list jb posted had 51
> > 
> > These things really dont match no matter how you turn it
> > 
> > And again thats why iam asking questions.
> 
> The problem is, there is nothing meaningful you can do with the answers.
> Yes, mistakes were made in 2020. The rules were not defined clearly
> enough. The process for generating the list was not formalized. The
> lists themselves were not preserved unambiguously, apparently.
> 
> Now all that is being rectified. The rules have been clarified. The list
> of voters has been published for the last vote, and the intent is to
> publish it for all future votes. I intend to update the script after the
> next vote, so that the extra GA members are in there and it generates
> the actually correct result.

for all i can tell all the votes in 2020 used consistantly the same list
(which may or may not be the correct list)
first without the extra members and then with teh 3 extra members.
exactly how one would expect.
and there where test votes prior to ensure everything worked

the problem was not 2020 (from what i can know/see ATM, the problem began in
2023 First the vote just started unexpectedly with no prior test, no
announcement. People didnt receive the mails, the options where not
discussed. The vote had to be repeated, you wrote the announcemnt
we added an option we fixed some issues in the options we tested
the infrastructure and then the vote started to my surprise not by
you and with a different list of voters.

If the rules are ambigous and one dont know who should be on the vote
list. One would post a "[RFC] Vote rules are ambigous" or
"[RFC] I lost the original list of voters from 2020" and find a
consensus first. Make sure things are transparent and everyone
understands whats going on.
None of this happened. Instead the information only slowly and after
alot of questions and increasing inconsitances where found, came out.
Fixing the rules, does not fix the lack of transparency.

What i suggest is that in the future the vote superviser is not one person
who can be overworked, stressed and forget things,
but at least 2 who work together and who must agree on every step before
doing it. The 2 people can be one member of the TC and one member of the CC
and for each vote a different pair would be selected. (with 5 members in each
committee there are 25 combinations minus anyone who doesnt volunteer and also
any pair who are friends (or the same person) should be excluded)

That is for the official votes like GA/TC/CC votes
Anyone can of course still start their own vote

Above mail is just a suggestion, if people want to keep the current
system. Iam not opposed. I was just thinking about what the alternatives
are and because few people i think have broad support and trust picking
a always changing pair seemed a interresting option to propose.
Now please flame me to death for suggesting this!
I need to look into releases (which i almost certainly wont be able to finish 
today)

Also the question about the vote supervisor was raised before in 2020 by paul

0702 12:58 Paul B Mahol(1,6K) [FFmpeg-devel] RfP Candidates
Why and how you are picked to do this stuff?
Can't we vote for someone else?

thx

[...]

-- 
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

I am the wisest man alive, for I know one thing, and that is that I know
nothing. -- Socrates


signature.asc
Description: PGP signature
___
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] avcodec/mpegvideo: Remove spec-incompliant inverse quantisation

2023-11-09 Thread Michael Niedermayer
On Thu, Nov 09, 2023 at 10:52:19PM +0200, Rémi Denis-Courmont wrote:
> Le torstaina 9. marraskuuta 2023, 22.45.35 EET Alexander Strasser a écrit :
> > I can't see how the reason for the presence of code can be ultimately
> > defined objectively and non-arbitrary.
> 
> Ultimately, this was discussed and decided in a meeting, which Michael 
> attended (albeit remotely) and for which meeting notes were published.

maybe i misremember as i was a bit sick that day
but there are 2 pieces of code
there was the "fast mode code" that i thought was discussed this is
disabled by default and we aggreed to remove it

the change here is about the default code path so this is very different
it will affect users with default options.

I do not remember this was discussed but its quite possible people
had a different interpretation what the words meant that where said.

This definitly should be tested before its applied. Whoever the burden falls
on is not my argument but ATM i have many things to do so i will not be able
to test this in the next days


> 
> That being the case, I don't see why Andreas should have to perform extensive 
> testing and write extensive justification. He could have done and that would 
> have been nice, but that is all.

I never meant that there should be extensive testing
but teh removal of a optimization from the default codepath should be
tested.
Also about spec non compliance, if this was so bad, being in the default
path there would be bug reports so iam a bit sceptic. not saying it
shouldnt be removed just saying we should look before removing it

thx

[...]
-- 
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

I have often repented speaking, but never of holding my tongue.
-- Xenocrates


signature.asc
Description: PGP signature
___
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".


  1   2   >