Re: [FFmpeg-user] Filter documentation -- PTSs

2021-02-15 Thread Chris Angelico
On Tue, Feb 16, 2021 at 1:23 PM Mark Filipak (ffmpeg)
 wrote:
>
> On 02/15/2021 08:54 PM, Chris Angelico wrote:
> > On Tue, Feb 16, 2021 at 12:45 PM Mark Filipak (ffmpeg)
> >  wrote:
> -bigsnip-
> >> The rest of 'C' syntax, and precedent, and operators, etc. I know. It's 
> >> just pointers that mystify
> >> me. Now I understand what a struct actually is but pointers?... not so 
> >> much. I thought I understood,
> >> but '**' fuddled it. I'm afraid I'm one of the people who, for example, 
> >> actually prefer BNF to
> >> textual descriptions.
> >
> > A pointer, ultimately, is just a number - the address of the next
> > thing. So the pointer-to-pointer is saying "at this address, you can
> > find the address you want".
> >
> > If this isn't helpful, feel free to ignore it; I'm sure there's BNF
> > around somewhere to explain it, but I'm not sure I could write it that
> > way, sorry.
>
> Hahaha... I brought up BNF just to illustrate how anal compulsive I am. For 
> example, documentation
> that's just for my eyes is full of regex & BNF.
>
> You've given me a good push. Thanks so much. I hope I can pull a thorn out of 
> your paw some day.

Or out of someone else's. Pass it forward, help the next person! :)
Happy to help!

ChrisA
___
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

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

Re: [FFmpeg-user] Filter documentation -- PTSs

2021-02-15 Thread Chris Angelico
On Tue, Feb 16, 2021 at 12:45 PM Mark Filipak (ffmpeg)
 wrote:
>
> On 02/15/2021 06:47 PM, Chris Angelico wrote:
> > On Tue, Feb 16, 2021 at 8:44 AM Mark Filipak (ffmpeg)
> >  wrote:
> >>
> >> On 02/15/2021 04:32 PM, Carl Zwanzig wrote:
> >>> On 2/15/2021 1:26 PM, Mark Filipak (ffmpeg) wrote:
> >>>> Yes, I'm aware of C++. It's sort of a 'C' language architecture hack, 
> >>>> isn't it?
> >>> More like butchery ...
> >>
> >> O... that's harsh.  :-)
> >>
> >>> Glad it's making more sense now.
> >>>
> >>> z!
> >>
> >> Thanks for the confirmation. Now, regarding pointers-to-pointers and '*' 
> >> as a unary operator.
> >>
> >
> > A pointer, at its core, is a number representing a place in memory. A
> > pointer to a pointer is a number representing the place in memory
> > where you can find another number that'll tell you where you want to
> > go. You want to know where the Sword Master can be found, but I won't
> > tell you where he is; all I'll tell you is that the shopkeeper knows
> > where to find the Sword Master. I point you to the shopkeeper, and
> > then you ask him to point you to the Sword Master.
> >
> > The asterisk, as a unary operator, is one step in that process.
> > Something like this:
> >
> > int **trial = find_sword_master();
>
> Oops, I'm getting lost in the story of the Sword Master. You're describing 
> indirection. I have no
> problem with indirection. The problem I have is simply with syntax 
> interpretation because to me,
> every variable (or constant) in every language is a location in memory, so 
> when you write that a
> number represents a place in memory, to me it's undistinguished, it's not any 
> different than any
> other variable (in any location in memory).
>
> Does '*' (a unary operator) that precedes a variable's name indicate that the 
> named variable is a
> pointer? Or do I have that bit wrong?

Yes, it does. For "*trial" to be meaningful, "trial" has to be a pointer.

> Is '**' also a unary operator? Or is it 2 unary operators, '*'+'*'? I suspect 
> that '**' is the
> infamous pointer-to-pointer (i.e. doubly indirect), or do I have that bit 
> wrong?

It's two separate unary operators, which is why I wrote it in one
place as *(*trial) - has the same meaning. Yes, "**trial" implies that
trial is a pointer to a pointer.

> > "trial" is a number that says where in memory the shopkeeper is.
> > What's that number?
> >
> > printf("Shopkeeper is at %p\n", trial);
>
> I have no idea what '%p' means or what you're trying to demonstrate by the 
> code. I don't know why
> the printf has a 2nd arg: 'trial'. '%' is modulo, but modulo is a binary 
> operator, not a unary
> operator. That it's in a string just adds to the mystery.

Ah, printf is doing formatted output, so it interpolates a value.
Sorry, if you're not familiar with that, just ignore it.

> > "*trial" is the number that can be found there. What's that number?
> >
> > printf("Sword Master is at %p\n", *trial);
>
> Okay, now I'm lost. is 'trial' a variable or a pointer?

Both. In the same way that "int x = 5;" has x as a variable and an integer.

> Specifically, is '*trial' a pointer that's
> labeled "trial" or is it a pointer to a variable that's labeled "trial"?

It's a pointer that's labelled "trial". The name refers to the
variable that has the first pointer - or if you prefer, it refers to
the variable that has the address of the second step.

> Or are both labeled
> "trial"? Or does the string "*trial" just represent an entity that's just a 
> relative memory address
> that neither the compiler nor the runtime system normally discloses? If your 
> 'printf' functions
> print, what do they print? ...Yes, I know that 'print' doesn't mean print on 
> a printer. The only
> thing I can guess is that "%p" is some sort of token, but I don't know its 
> meaning.

Don't worry about the printf stuff, that's just a quick way to print
out the numbers involved.

> The rest of 'C' syntax, and precedent, and operators, etc. I know. It's just 
> pointers that mystify
> me. Now I understand what a struct actually is but pointers?... not so much. 
> I thought I understood,
> but '**' fuddled it. I'm afraid I'm one of the people who, for example, 
> actually prefer BNF to
> textual descriptions.
>

A pointer, ultimately, is just a number - the address of the next
thing. So the pointer-to-pointer is saying "at this address, you can
find the address you want".

If this isn't helpful, feel free to ignore it; I'm sure there's BNF
around somewhere to explain it, but I'm not sure I could write it that
way, sorry.

ChrisA
___
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

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

Re: [FFmpeg-user] Trying to stream to rtmp from my rsp4 and a GoPro

2021-02-15 Thread Chris Angelico
On Tue, Feb 16, 2021 at 10:35 AM Mike Soultanian  wrote:
>
> Well.. that was extremely frustrating. I've seriously been going at this
> for probably 16 hours, scouring the net for documentation and trying
> other people's tutorials, wondering why my setup wasn't working as well
> as all the examples that described all the cool stuff you could do with
> ffmpeg.  It was only after I purchased another capture card (Elgato Cam
> Link 4k) that I found I found this article when searching for *ffmpeg
> elgato cam link* and found this page:
>
> https://blog.eigenvalue.net/ffmpeg-elgato-camlink-4k/
>
> What was so crucial was one little tidbit towards the end of the page
> where the author writes (referring to running the ffmpeg command):
>
> > Unfortunately, most of the time it will get stuck after two frames.
> > After some random experimentation, I noticed that unplugging the
> > device allowed me to record once, most of the time. I think that it is
> > due to syncing the audio / video stream. The video source seems to
> > request key frames doesn't get the expected data afterwards. Or
> > something else.
> >
>
> This was *exactly* the behavior I was running into, but I had no idea
> that I was actually running into that particular issue!  This whole time
> I had a gut feeling that there was somewhat inconsistent behavior
> (sometimes it would seem to work and then on the next run with the same
> settings it would have very low FPS), but I'm a total newbie to this so
> I didn't know if this was just normal behavior or something was wrong.

Not sure if it's the same cause, but a friend of mine has a similar
setup, and she had the same sort of problem when streaming on Twitch.
Her solution was to set it to 4k 30fps and select recording video mode
(without actually recording).

ChrisA
___
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

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

Re: [FFmpeg-user] Filter documentation -- PTSs

2021-02-15 Thread Chris Angelico
On Tue, Feb 16, 2021 at 8:44 AM Mark Filipak (ffmpeg)
 wrote:
>
> On 02/15/2021 04:32 PM, Carl Zwanzig wrote:
> > On 2/15/2021 1:26 PM, Mark Filipak (ffmpeg) wrote:
> >> Yes, I'm aware of C++. It's sort of a 'C' language architecture hack, 
> >> isn't it?
> > More like butchery ...
>
> O... that's harsh.  :-)
>
> > Glad it's making more sense now.
> >
> > z!
>
> Thanks for the confirmation. Now, regarding pointers-to-pointers and '*' as a 
> unary operator.
>

A pointer, at its core, is a number representing a place in memory. A
pointer to a pointer is a number representing the place in memory
where you can find another number that'll tell you where you want to
go. You want to know where the Sword Master can be found, but I won't
tell you where he is; all I'll tell you is that the shopkeeper knows
where to find the Sword Master. I point you to the shopkeeper, and
then you ask him to point you to the Sword Master.

The asterisk, as a unary operator, is one step in that process.
Something like this:

int **trial = find_sword_master();

"trial" is a number that says where in memory the shopkeeper is.
What's that number?

printf("Shopkeeper is at %p\n", trial);

"*trial" is the number that can be found there. What's that number?

printf("Sword Master is at %p\n", *trial);

The number you found when you asked the shopkeeper is the address of
the Sword Master. So if you want to actually learn what the sword
master can teach you, you'd have to go to that address.

printf("Sword Master can teach you: %d\n", *(*trial));

and since the parentheses do nothing there, that's just the same as "**trial".

The unary asterisk is the technique of following a pointer to find out
what it points to, and you can do it more than once.

There's a lot of monkeying around in C, but most of it comes down to a
few simple operations, done lots and lots of times. So if you're stuck
thinking there are no clever tricks that could help you, don't worry -
there are, you just might have never learned them. And that's a
solvable problem.

ChrisA
(I post like a dairy farmer.)
___
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

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

Re: [FFmpeg-user] Filter documentation -- PTSs

2021-02-15 Thread Chris Angelico
On Tue, Feb 16, 2021 at 8:29 AM Mark Filipak (ffmpeg)
 wrote:
>
> On 02/15/2021 06:38 AM, Chris Angelico wrote:
> > On Mon, Feb 15, 2021 at 9:21 PM Mark Filipak (ffmpeg)
> >  wrote:
> >> On 02/15/2021 01:56 AM, Chris Angelico wrote:
> >>> On Mon, Feb 15, 2021 at 5:32 PM Mark Filipak (ffmpeg)
> >>>  wrote:
> >>>>> frame->pts = (
> >>>>> (s->start_time == AV_NOPTS_VALUE) ? 0 : s->start_time) +
> >>>>> av_rescale(outlink->frame_count_in, s->ts_unit.num, 
> >>>>> s->ts_unit.den);
> >>>>
> >>>> I don't know what this: 'frame->pts', means. ...
> >>>
> >>> struct FrameyThingyWhatsit {
> >>>   int foo;
> >>>   int bar;
> >>>   void *quux;
> >>>   int pts;
> >>>   const char *flurble;
> >>> };
> >
> > "frame" is a variable, declared to be a pointer to a
> > FrameyThingyWhatsit, and assigned to something. It might be something
> > like this:
> >
> > struct FrameyThingyWhatsit *frame;
> >
> > frame = malloc(sizeof(FrameyThingyWhatsit));
> >
> > That'll allocate enough memory for the entire structure, and then
> > "frame" is a pointer to the start of that structure. Just like with
> > arrays ...
>
> "Thunk"!   ...The sound of pieces falling in place.
>
> So this:
>
> struct FrameyThingyWhatsit {...int pts;...}   ...a 'C' structure referenced by
> 'FrameyThingyWhatsit->pts'
>
> is equivalent to this:
>
> FrameyThingyWhatsit = [...pts,...]   ...an array referenced by 
> 'FrameyThingyWhatsit[3]' (except that
> mixed datatypes in arrays are verboten)
>
> or maybe better analogy, to this:
>
> FrameyThingyWhatsit = {...pts,...}   ...an object referenced by 
> 'FrameyThingyWhatsit.pts'
>
> >... you hang onto a pointer to the base of it, and then you index
> > into it; the compiler knows the layout of the structure, so when you
> > say "frame->pts", it knows exactly how many bytes above the base of
> > the structure to find that member.
>
> Ah, so there can be
> struct thisframe {...int pts;...}
> struct thatframe {...int pts;...}
> struct otherframe {...int pts;...}
> referenced by 'thisframe->pts', 'thatframe->pts', and 'otherframe->pts', and 
> the 3 'pts's are
> independent of one another, sort of like 3 namespaces.
>
> I think I have it right, or do I?

Yes. The "pts" in each case has no meaning on its own, and the
compiler understands it specifically by knowing the type of the
variable that you're looking at.

(Other languages work differently, but this is C's way of doing things.)

> >>> But I think Carl's point was that you can't simply look at an
> >>> expression and decode it as algebra. To understand this line of code,
> >>> you not only have to interpret the syntax of this exact line, but -
> >>> and probably more importantly - you have to understand what the
> >>> av_rescale function is doing.
> >>
> >> Well, I think I know what 'av_rescale()' is doing (at least for the 
> >> 'minterpolate=fps=48/1.001' &
> >> 'telecine' filters). I ran some tests. Look:
> >
> > Uhh. cool. This is the part where I'm the one who has no clue
> > what's going on, so I'm just going to do the whole "smile and nod"
> > thing, and trust that you know what's going on :)
>
> Well, here's the thing: At times PTSs are perfect [1], or sometimes they're 
> bollixed but the video
> nonetheless plays properly [2], or sometimes it doesn't play properly [3].
> [1] 60/1.001fps example: MPV shows "FPS: 59.940 (specified) 59.940 
> (estimated)"
> [2] 60/1.001fps example: MPV shows "FPS: 60.025 (specified) 59.940 
> (estimated)"
> [3] 60/1.001fps example: MPV shows "FPS: 59.940 (specified) ...wanders... 
> (estimated)"
>
> That playback behavior is the 1st clue I got that PTSs are key. Why are there 
> MPV differences
> remains a mystery -- I assume that it indicates that the PTSs are (may be) 
> correct but the video's
> metadata is wrong. Of course, my inference may be wrong -- ffmpeg 
> investigation is like reading a
> murder mystery.

Ahh, yep, gotcha.

> > Glad I could help! You're on your own for the next part, but if I've
> > been of any value at all, that's awesome. All the best!
> >
> > ChrisA
>
> You did well, Chris, and you did good. Thanks so much. I feel I know what 'C' 
> structures are and how
> the '->' operator works -- before you, I didn't even know that '"struct 
> "+label+"{ "+type+" "+var"
> }"' and 'label+"->"+var"' were related. The bottom line is this: A struct is 
> the 'C'-way to
> instantiate an object -- Yes, I'm aware of C++. It's sort of a 'C' language 
> architecture hack, isn't
> it?
>

In object-oriented languages, an object has methods (functions, code)
as well as data members, but C just has the members, the pure data.
But yes, it's basically the C way to do this.

ChrisA
___
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

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

Re: [FFmpeg-user] Filter documentation -- PTSs

2021-02-15 Thread Chris Angelico
On Mon, Feb 15, 2021 at 9:21 PM Mark Filipak (ffmpeg)
 wrote:
>
> On 02/15/2021 01:56 AM, Chris Angelico wrote:
> > On Mon, Feb 15, 2021 at 5:32 PM Mark Filipak (ffmpeg)
> >  wrote:
> >>> frame->pts = (
> >>>(s->start_time == AV_NOPTS_VALUE) ? 0 : s->start_time) +
> >>>av_rescale(outlink->frame_count_in, s->ts_unit.num, 
> >>> s->ts_unit.den);
> >>
> >> I don't know what this: 'frame->pts', means. I have written a ton of 
> >> assembly code for various
> >> micros and people tell me, "It's easy, Mark. 'frame->pts' is a 'pointer' 
> >> to memory as in assembly",
> >> but I don't see the analog of a memory address register in it. If 'pts' is 
> >> a pointer, then how can
> >> 'frame' be written through that pointer and where does it get written? 
> >> It's a mystery to me. Or is
> >> 'frame' the pointer and 'pts' the memory location?
> >
> > 'frame' is a pointer to a structure of some sort, and 'pts' is a named
> > element within that structure. So you might have something like:
> >
> > struct FrameyThingyWhatsit {
> >  int foo;
> >  int bar;
> >  void *quux;
> >  int pts;
> >  const char *flurble;
> > };
> >
> > and then 'frame' would be a pointer to an in-memory structure of that
> > type. When you refer to 'frame->pts', that means 'look at the spot in
> > memory three words in from where frame points, and assign to that'.
>
> Well, that makes perfect sense. Thank you, Chris! You've removed most of the 
> mystery. One thing
> remains: What links the label "frame" to the structure "FrameyThingyWhatsit"? 
> Is there a linker
> directive somewhere, and what would it look like?

"frame" is a variable, declared to be a pointer to a
FrameyThingyWhatsit, and assigned to something. It might be something
like this:

struct FrameyThingyWhatsit *frame;

frame = malloc(sizeof(FrameyThingyWhatsit));

That'll allocate enough memory for the entire structure, and then
"frame" is a pointer to the start of that structure. Just like with
arrays, you hang onto a pointer to the base of it, and then you index
into it; the compiler knows the layout of the structure, so when you
say "frame->pts", it knows exactly how many bytes above the base of
the structure to find that member.

(It's not necessarily going to be the sum of the sizes of the
preceding elements, due to alignment requirements and padding. But if
there's any complexities to it, it's the compiler's job to know about
them. As the programmer, you just use the name of the member, and
it'll figure out the details.)

> Oh, one thing I should clarify. All the folks who tried to explain pointers 
> to me were firmware
> writers. Perhaps that explains why they referred to memory, eh? Hahaha... 
> never thought about it
> before until you showed me the real codewright's view.

Heh maybe. I mainly work in high level languages, preferring to dip
into C only when necessary (such as when implementing an interpreter
for an HLL!); but I've also taught data structures and algorithms
using a combination of JavaScript and, I kid you not, a deck of cards
on a desk. With a webcam mounted vertically on a hacked-up lamp arm.
But if you've ever tried to comprehend quicksort by reading through a
highly optimized C implementation, you'll appreciate the WAY easier
explanation that doesn't look at memory at all :)

(Seriously, quicksort is actually a very simple algorithm. It's just
that it becomes almost completely opaque when you look at an in-place
implementation.)

> > But I think Carl's point was that you can't simply look at an
> > expression and decode it as algebra. To understand this line of code,
> > you not only have to interpret the syntax of this exact line, but -
> > and probably more importantly - you have to understand what the
> > av_rescale function is doing.
>
> Well, I think I know what 'av_rescale()' is doing (at least for the 
> 'minterpolate=fps=48/1.001' &
> 'telecine' filters). I ran some tests. Look:

Uhh. cool. This is the part where I'm the one who has no clue
what's going on, so I'm just going to do the whole "smile and nod"
thing, and trust that you know what's going on :)

> I imagine the rest of the code is involved in initialization of certain 
> things that aren't already
> defined, and scaling for things that could be represented as floats but are 
> initialized as scaled
> integers in order to improve the speed of the pipeline. Do those 
> rationalizations sound reasonable
> to you?

Yeah, they definitely sound plausible, but I haven't looked at the code.

> So, to wrap up, 

Re: [FFmpeg-user] Filter documentation -- PTSs

2021-02-14 Thread Chris Angelico
On Mon, Feb 15, 2021 at 5:32 PM Mark Filipak (ffmpeg)
 wrote:
> > frame->pts = (
> >   (s->start_time == AV_NOPTS_VALUE) ? 0 : s->start_time) +
> >   av_rescale(outlink->frame_count_in, s->ts_unit.num, s->ts_unit.den);
>
> I don't know what this: 'frame->pts', means. I have written a ton of assembly 
> code for various
> micros and people tell me, "It's easy, Mark. 'frame->pts' is a 'pointer' to 
> memory as in assembly",
> but I don't see the analog of a memory address register in it. If 'pts' is a 
> pointer, then how can
> 'frame' be written through that pointer and where does it get written? It's a 
> mystery to me. Or is
> 'frame' the pointer and 'pts' the memory location?

'frame' is a pointer to a structure of some sort, and 'pts' is a named
element within that structure. So you might have something like:

struct FrameyThingyWhatsit {
int foo;
int bar;
void *quux;
int pts;
const char *flurble;
};

and then 'frame' would be a pointer to an in-memory structure of that
type. When you refer to 'frame->pts', that means 'look at the spot in
memory three words in from where frame points, and assign to that'.

But I think Carl's point was that you can't simply look at an
expression and decode it as algebra. To understand this line of code,
you not only have to interpret the syntax of this exact line, but -
and probably more importantly - you have to understand what the
av_rescale function is doing.

> It's my deficiency, but it stops me cold every time I look at 'C' code. My 
> brain just locks up.

Yeah, well, I generally recommend spending as little time in C as
possible, if you want to be productive :) I like to pick up a library
like ffmpeg, and then write all the surrounding code in a high level
language like Python or Pike. The "heavy lifting" is done by the
library, but I spend 99% of my time working in high level code,
figuring out what I actually want my app to be doing.

ChrisA
___
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

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

Re: [FFmpeg-user] "instead of complaining, submit a patch" [was: Re: minterpolate problem]

2021-02-02 Thread Chris Angelico
On Tue, Feb 2, 2021 at 10:00 PM Reindl Harald  wrote:
>
>
>
> Am 02.02.21 um 11:54 schrieb Phil Rhodes via ffmpeg-user:
> >
> >
> >  On Tuesday, 2 February 2021, 10:17:11 GMT, Reindl Harald 
> >  wrote:
> > (snip)
> > Well, you just keep telling yourself all that, and we'll keep admiring the 
> > fantastic documentation ffmpeg has. Obviously, it's a brilliant endorsement 
> > of whatever your approach is.
> > You have people offering to do free work for you and you're rejecting it 
> > (among oh so many other reasons) because of some insane software 
> > fashionability position.
>
> do you fucking idiot realize that i have *nothing* to do with the ffmpeg
> project? i'm an ordinar yffmoeg user like you
>
> the difference between both of you is "only" that i am 43 years old and
> started programming computers with the age of 9

And Phil learned basic courtesy.

ChrisA
___
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

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

Re: [FFmpeg-user] Next Release

2021-01-26 Thread Chris Angelico
On Wed, Jan 27, 2021 at 6:25 AM Reindl Harald  wrote:
>
>
>
> Am 26.01.21 um 20:23 schrieb Chris Angelico:
> > On Wed, Jan 27, 2021 at 6:18 AM Reindl Harald  
> > wrote:
> >>
> >>
> >>
> >> Am 26.01.21 um 19:43 schrieb Chris Angelico:
> >>> On Wed, Jan 27, 2021 at 5:36 AM Reindl Harald  
> >>> wrote:
> >>>> the unknown ones breaking workloads you didn't think of in your tests is
> >>>> the problem and hence only idiots running git-snapshots in production
> >>>
> >>> Lovely. You just called me an idiot to my face.
> >>>
> >>> For the record, not FFMPEG, but I have master-branch builds of quite a
> >>> number of pieces of software as my production system. Two programming
> >>> language interpreters, streaming software, video player, webmail
> >>> client and plenty else.
> >>>
> >>> Do you realise how toxic you make the FFMPEG community look?
> >>
> >> don't you realize that what you call production is not the same as the
> >> rest of the world calls production?
> >
> > You're right, I have no idea that "production" means something
> > different from "running on servers that are available to the world
> > 24x7". Sorry, my bad
>
> can we stop that idiotic sub discussion by the simple fact that you are
> a minority when it comes to "production" servers?
>
> it's you decision, fine, you can and have to deal with it
>
> it's not best practice - period

No problem, let me know when the Squirrel Mail people change their
release policy then.

ChrisA
___
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

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

Re: [FFmpeg-user] Next Release

2021-01-26 Thread Chris Angelico
On Wed, Jan 27, 2021 at 6:18 AM Reindl Harald  wrote:
>
>
>
> Am 26.01.21 um 19:43 schrieb Chris Angelico:
> > On Wed, Jan 27, 2021 at 5:36 AM Reindl Harald  
> > wrote:
> >> the unknown ones breaking workloads you didn't think of in your tests is
> >> the problem and hence only idiots running git-snapshots in production
> >
> > Lovely. You just called me an idiot to my face.
> >
> > For the record, not FFMPEG, but I have master-branch builds of quite a
> > number of pieces of software as my production system. Two programming
> > language interpreters, streaming software, video player, webmail
> > client and plenty else.
> >
> > Do you realise how toxic you make the FFMPEG community look?
>
> don't you realize that what you call production is not the same as the
> rest of the world calls production?

You're right, I have no idea that "production" means something
different from "running on servers that are available to the world
24x7". Sorry, my bad.

ChrisA
___
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

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

Re: [FFmpeg-user] Next Release

2021-01-26 Thread Chris Angelico
On Wed, Jan 27, 2021 at 5:36 AM Reindl Harald  wrote:
> the unknown ones breaking workloads you didn't think of in your tests is
> the problem and hence only idiots running git-snapshots in production

Lovely. You just called me an idiot to my face.

For the record, not FFMPEG, but I have master-branch builds of quite a
number of pieces of software as my production system. Two programming
language interpreters, streaming software, video player, webmail
client and plenty else.

Do you realise how toxic you make the FFMPEG community look?

ChrisA
___
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

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

Re: [FFmpeg-user] Uninstalling ffmpeg

2020-12-02 Thread Chris Angelico
On Thu, Dec 3, 2020 at 6:33 AM Andy Sheimo  wrote:
> Actually having a static binary is not a no brainer. I know that I use a
> static binary and I can make said static binary jump through hoops, but I
> can't tell you why I use a static binary or the difference between that and
> a shared binary. Someday I should probably learn but as of today I don't
> know. if that makes me "a little child" with "a slow brain" then said
> person is brilliant.

Advantages of static linking:
1) Self-contained - convenient
2) Locks in its dependencies - consistent

Advantages of dynamic linking:
1) Deduplication. Many executables can link to the same library and
they'll use the same one - on disk, in memory, etc. Reduces load times
for commonly-used libraries. Can be taken even further by putting the
libraries on fast storage, and then even an executable on slow storage
will be able to load the library at high speed.
2) Dependencies can be updated independently, allowing bug fixes and
security patches.

It's most definitely not a no-brainer, and there are good reasons to
use both (even within the same binary - statically link some libraries
and dynamically link others).

ChrisA
___
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

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

Re: [FFmpeg-user] Compilation Guide / MSVC on Wiki

2020-12-02 Thread Chris Angelico
On Thu, Dec 3, 2020 at 4:32 AM hinderanyoption81 via ffmpeg-user
 wrote:
>
> Hello,
> Upon reading the "Compilation Guide / MSVC on Wiki", I am confused about at 
> least three issues.
> 1. The Guide starts with a sentence "FFmpeg can be built on Windows with 
> Visual Studio", and then it says:
>
> Finally, run: For MSVC:
> ./configure --toolchain=msvc
> make
> make install
>
> First, this is a Unix command that will not run on Windows. Second, does 
> "make" refer to a Windows make.exe or a Unix make.exe, and where is that file 
> located?
>
> 2. The Guide says that "www.mingw.org" is a prerequisite. Their web installer 
> at osdn.net/projects/mingw/downloads/68260/mingw-get-setup.exe doesn't work 
> (I get error messages like
>

The point of mingw is to have access to all those essential Unix
commands, even though you're on Windows. So the key here is to get
mingw successfully installed. I can't help with the specifics there,
but that's definitely what needs to happen.

ChrisA
___
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

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

Re: [FFmpeg-user] Uninstalling ffmpeg

2020-12-01 Thread Chris Angelico
On Wed, Dec 2, 2020 at 6:21 AM Reindl Harald  wrote:
>
>
>
> Am 01.12.20 um 20:17 schrieb Carl Zwanzig:
> > On 12/1/2020 10:23 AM, Reindl Harald wrote:
> >>> How do I uninstall ffmpeg considering this installation process?
> >
> > That .7z file appears to contain a single statically-linked ffmpeg
> > executable, so just delete the file "ffmpeg".
>
> so a stupid question
>
> >> ask whoever provided a useless installer for unix systems
> >
> > If you'd done even the slightest research (as I did, took under a
> > minute), you'd see that the "installer" consists of unzipping the .7z
> > file and getting a single ffmpeg executable. Which can then be deleted.
> > (And... that's a Mac build, not a *nix build.)
>
> why should i waste my time with homework of others?
>
> > If you don't have anything useful to say, better not to say anything
>
> if the OP would have done "even the slightest research" the whole treahd
> won#t exist, it exists because are people tooo dumb or too lazy (chose
> what you want) to type their idiotic questions into some random search
> engine
>

Does insulting people actually entertain you? I can't see why you
wouldn't just delete posts and move on, rather than taking the time
and effort to make someone else feel bad.

I'm not really a member of this community but you're really standing out here.

ChrisA
___
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

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

[FFmpeg-user] META: Courtesy and code of conduct

2020-12-01 Thread Chris Angelico
Let me preface this by saying that I'm not an established member of
this community, and I may be completely off the mark here. If so, my
apologies, and do please let me know how things are done here.

According to my reading of the mailing list FAQ (linked at the bottom
of each post), members are expected to adhere to the Code of Conduct.

https://ffmpeg.org/mailing-list-faq.html#Rules-and-Etiquette
https://ffmpeg.org/developer.html#Code-of-conduct

One person here has been repeatedly (and gratuitously) insulting and
unhelpful, denigrating people for not "empowering themselves". But
from my experience, one of the very best ways to empower yourself is
to learn from those who know more than you do - for instance, by
asking questions on a mailing list. We didn't all start with immense
knowledge of how to use Unix, and it shouldn't be a prerequisite of
FFMPEG that we have to already know all the subtleties of various
operating systems.

At the risk of asking a stupid question and incurring his wrath, who
is Reindl Harald and what is his relationship with the FFMPEG project?
Does he own this mailing list, or the code, or anything like that?
Searching the web showed up some interesting, but not overly helpful,
results. Does FFMPEG consider Reindl Harald to be its spokesman?

Chris Angelico
___
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

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

Re: [FFmpeg-user] Channel manipulation and audio filter equivalencies

2020-11-18 Thread Chris Angelico
On Thu, Nov 19, 2020 at 10:08 AM adam smith via ffmpeg-user
 wrote:
>
> Apologies, I said LF|RF but it should be
> 'channelsplit' with args 'channel_layout=7.1:channels=FL|FR’
>
>  "7.1"   =>["FL","FR","FC","LFE","BL","BR","SL","SR"],
>  "7.1(wide)" =>["FL","FR","FC","LFE","BL","BR","FLC","FRC"],
>  "7.1(wide-side)"=>["FL","FR","FC","LFE","FLC","FRC","SL","SR"],
>

Ahh, thank you!

That does at least work, so now I'm going to let that do some work for
a while and then listen to the results :)

Appreciate the help. Still not sure how all the different filters behave.

ChrisA
___
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

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

Re: [FFmpeg-user] Channel manipulation and audio filter equivalencies

2020-11-18 Thread Chris Angelico
On Thu, Nov 19, 2020 at 9:21 AM adam smith via ffmpeg-user
 wrote:
>
>
> > On 18 Nov 2020, at 21:55, Chris Angelico  wrote:
> >
> > But when I tried things along these lines, I got complaints that some
> > of the outputs weren't connected to anything.
>
> I didn’t add the input stream as I am not sure what stream it is on your 
> source.
> If could be something like…
>
> ffmpeg -stats -y -i Original.mkv -filter_complex
> "[0:1]channelsplit=channel_layout=7.1:channels=LF|RF[lf][rf];[lf][rf]amerge=inputs=2[aout]"
> -map 0:v -map "aout" -map 0:s channel_split.mkv
>

Regardless of the input mapping, it's still complaining about that
channelsplit configuration.

Is there any way to figure out what the actual error is? Even with
loglevel debug, all I get is this:

Successfully opened the file.
[Parsed_channelsplit_0 @ 0x55f0a8d38780] Setting 'channel_layout' to value '7.1'
[Parsed_channelsplit_0 @ 0x55f0a8d38780] Setting 'channels' to value 'LF|RF'
[AVFilterGraph @ 0x55f0a8cea280] Error initializing filter
'channelsplit' with args 'channel_layout=7.1:channels=LF|RF'
Error initializing complex filters.
Invalid argument

ChrisA
___
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

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

Re: [FFmpeg-user] Channel manipulation and audio filter equivalencies

2020-11-18 Thread Chris Angelico
On Thu, Nov 19, 2020 at 8:48 AM adam smith via ffmpeg-user
 wrote:
>
>
> > On 12 Nov 2020, at 06:10, Chris Angelico  wrote:
> >
> > Anyone have recommendations on these options, or any other preferred
> > way to remap channels at maximum quality?
>
> You could try using the channelsplit and selecting the specific channels you 
> want and then merging them into a single stream. 
> channelsplit=channel_layout=7.1:channels=LF|RF[lf][rf];[lf][rf]amerge=inputs=2[aout]
>

Hmm, I must be missing something here, because I get this error:

$ ffmpeg -stats -y -i Original.mkv -filter_complex
'channelsplit=channel_layout=7.1:channels=LF|RF[lf][rf];[lf][rf]amerge=inputs=2[aout]'
-map 0:v -map 0:s channel_split.mkv
[AVFilterGraph @ 0x559f11cf7f80] Error initializing filter
'channelsplit' with args 'channel_layout=7.1:channels=LF|RF'
Error initializing complex filters.
Invalid argument

But when I tried things along these lines, I got complaints that some
of the outputs weren't connected to anything.

ChrisA
___
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

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

Re: [FFmpeg-user] Channel manipulation and audio filter equivalencies

2020-11-11 Thread Chris Angelico
On Fri, Nov 6, 2020 at 2:43 AM Chris Angelico  wrote:
> The real challenge is selecting two channels and trying to make them
> into the left and right channels of a new stereo audio channel. One
> option is channelmap:
>
> ffmpeg -loglevel error -stats -y -i Original.mkv -af
> 'channelmap=map=BL|BR' channel_split.mkv
>
> Another option is pan:
>
> ffmpeg -loglevel error -stats -y -i Original.mkv -af
> 'pan=stereo|c0=BL|c1=BR' channel_split.mkv
>

Anyone have recommendations on these options, or any other preferred
way to remap channels at maximum quality?

ChrisA
___
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

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

[FFmpeg-user] Channel manipulation and audio filter equivalencies

2020-11-05 Thread Chris Angelico
Hi! (First time post on this list.)

I'm not a hugely skilled audiophile, and I'm trying to do some audio
manipulation with ffmpeg. At times, the result isn't what I'd like it
to be, and I'm not always sure why, so the first step right now is to
try to understand what on earth it is that I'm actually asking ffmpeg
to do :)

Primary references:
https://trac.ffmpeg.org/wiki/AudioChannelManipulation
https://ffmpeg.org/ffmpeg-filters.html

My input file has eight audio channels and is described by ffprobe as
"7.1". If I use the channelsplit filter, I can listen to any channel
individually:

ffmpeg -loglevel error -stats -y -i Original.mkv -filter_complex
'channelsplit=channel_layout=7.1' -map 0:v -map 0:s channel_split.mkv

(Without loglevel error, this produces massive spam of "Queue input is
backward in time", but the audio is fine. As a side point, I'm curious
as to whether there's a better solution than simply silencing those
warnings.)

The result is a file with video and subtitle streams unchanged, and
eight individual audio streams. With judicious use of
"-metadata:s:a:%d" these can even be labelled, making them easy to
flip through. Well and good.

The real challenge is selecting two channels and trying to make them
into the left and right channels of a new stereo audio channel. One
option is channelmap:

ffmpeg -loglevel error -stats -y -i Original.mkv -af
'channelmap=map=BL|BR' channel_split.mkv

Another option is pan:

ffmpeg -loglevel error -stats -y -i Original.mkv -af
'pan=stereo|c0=BL|c1=BR' channel_split.mkv

According to the docs, pan should detect a pure channel mapping and do
an optimized lossless remap, which in theory should mean that these
two are the same. But my understanding must be wrong, because they
sound completely different :)

A third option is join:

ffmpeg -loglevel error -stats -y -i Original.mkv -af
'join=inputs=1:map=0.BL-FL|0.BR-FR' channel_split.mkv

This sounds very similar to the pan result, but quieter.

What am I doing wrong with the channelmap, and what is the preferred
way to create a stereo output by selecting channels?

Chris Angelico
___
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

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