Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
* [FFmpeg-devel] [PATCH 1/3] Revert "avdevice/pulse_audio_dec: only set adjust latency flag if fragment_size is not set"
@ 2022-06-11 18:16 Marton Balint
  2022-06-11 18:16 ` [FFmpeg-devel] [PATCH 2/3] avdevice/pulse_audio_dec: reduce default fragment size Marton Balint
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Marton Balint @ 2022-06-11 18:16 UTC (permalink / raw)
  To: ffmpeg-devel; +Cc: Marton Balint

This reverts commit 7f059a250bb7bcbf7bba537c1a059a5934413035.

Apparently adjusting latency makes a difference even if fragment size is specifed.

Signed-off-by: Marton Balint <cus@passwd.hu>
---
 libavdevice/pulse_audio_dec.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavdevice/pulse_audio_dec.c b/libavdevice/pulse_audio_dec.c
index a33d1afd1f..ed094fd250 100644
--- a/libavdevice/pulse_audio_dec.c
+++ b/libavdevice/pulse_audio_dec.c
@@ -220,7 +220,7 @@ static av_cold int pulse_read_header(AVFormatContext *s)
 
     ret = pa_stream_connect_record(pd->stream, device, &attr,
                                     PA_STREAM_INTERPOLATE_TIMING
-                                    | (pd->fragment_size == -1 ? PA_STREAM_ADJUST_LATENCY : 0)
+                                    |PA_STREAM_ADJUST_LATENCY
                                     |PA_STREAM_AUTO_TIMING_UPDATE);
 
     if (ret < 0) {
-- 
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-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [FFmpeg-devel] [PATCH 2/3] avdevice/pulse_audio_dec: reduce default fragment size
  2022-06-11 18:16 [FFmpeg-devel] [PATCH 1/3] Revert "avdevice/pulse_audio_dec: only set adjust latency flag if fragment_size is not set" Marton Balint
@ 2022-06-11 18:16 ` Marton Balint
  2022-06-11 18:16 ` [FFmpeg-devel] [PATCH 3/3] avdevice/pulse_audio_dec: deprecate frame_size option Marton Balint
  2022-06-16 19:37 ` [FFmpeg-devel] [PATCH 1/3] Revert "avdevice/pulse_audio_dec: only set adjust latency flag if fragment_size is not set" Marton Balint
  2 siblings, 0 replies; 4+ messages in thread
From: Marton Balint @ 2022-06-11 18:16 UTC (permalink / raw)
  To: ffmpeg-devel; +Cc: Marton Balint

Reduces default fragment size from the pulse audio default of 2 sec to 50 ms.
This also has an effect on the size of the returned frames, which will be
around 50 ms as well, making timestamps more accurate.

This should fix the regression in ticket #9776.

Pulseaudio timestamps for monitor sources are still pretty inaccurate for me,
but I don't see how else should we query latencies from the library.

Signed-off-by: Marton Balint <cus@passwd.hu>
---
 doc/indevs.texi               | 4 ++--
 libavdevice/pulse_audio_dec.c | 7 ++++++-
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/doc/indevs.texi b/doc/indevs.texi
index 9d8020311a..1141da26d1 100644
--- a/doc/indevs.texi
+++ b/doc/indevs.texi
@@ -1292,8 +1292,8 @@ Specify the channels in use, by default 2 (stereo) is set.
 Specify the number of bytes per frame, by default it is set to 1024.
 
 @item fragment_size
-Specify the minimal buffering fragment in PulseAudio, it will affect the
-audio latency. By default it is unset.
+Specify the size in bytes of the minimal buffering fragment in PulseAudio, it
+will affect the audio latency. By default it is set to 50 ms amount of data.
 
 @item wallclock
 Set the initial PTS using the current time. Default is 1.
diff --git a/libavdevice/pulse_audio_dec.c b/libavdevice/pulse_audio_dec.c
index ed094fd250..c780d607a0 100644
--- a/libavdevice/pulse_audio_dec.c
+++ b/libavdevice/pulse_audio_dec.c
@@ -162,7 +162,12 @@ static av_cold int pulse_read_header(AVFormatContext *s)
         return AVERROR(ENOMEM);
     }
 
-    attr.fragsize = pd->fragment_size;
+    if (pd->fragment_size == -1) {
+        // 50 ms fragments/latency by default seem good enough
+        attr.fragsize = av_rescale(pa_frame_size(&ss), pd->sample_rate, 20);
+    } else {
+        attr.fragsize = pd->fragment_size;
+    }
 
     if (s->url[0] != '\0' && strcmp(s->url, "default"))
         device = s->url;
-- 
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-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [FFmpeg-devel] [PATCH 3/3] avdevice/pulse_audio_dec: deprecate frame_size option
  2022-06-11 18:16 [FFmpeg-devel] [PATCH 1/3] Revert "avdevice/pulse_audio_dec: only set adjust latency flag if fragment_size is not set" Marton Balint
  2022-06-11 18:16 ` [FFmpeg-devel] [PATCH 2/3] avdevice/pulse_audio_dec: reduce default fragment size Marton Balint
@ 2022-06-11 18:16 ` Marton Balint
  2022-06-16 19:37 ` [FFmpeg-devel] [PATCH 1/3] Revert "avdevice/pulse_audio_dec: only set adjust latency flag if fragment_size is not set" Marton Balint
  2 siblings, 0 replies; 4+ messages in thread
From: Marton Balint @ 2022-06-11 18:16 UTC (permalink / raw)
  To: ffmpeg-devel; +Cc: Marton Balint

It does not do anything. Frame sizes can be controlled by using fragment_size.

Signed-off-by: Marton Balint <cus@passwd.hu>
---
 doc/indevs.texi               | 2 +-
 libavdevice/pulse_audio_dec.c | 3 ++-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/doc/indevs.texi b/doc/indevs.texi
index 1141da26d1..8a198c4b44 100644
--- a/doc/indevs.texi
+++ b/doc/indevs.texi
@@ -1289,7 +1289,7 @@ Specify the samplerate in Hz, by default 48kHz is used.
 Specify the channels in use, by default 2 (stereo) is set.
 
 @item frame_size
-Specify the number of bytes per frame, by default it is set to 1024.
+This option does nothing and is deprecated.
 
 @item fragment_size
 Specify the size in bytes of the minimal buffering fragment in PulseAudio, it
diff --git a/libavdevice/pulse_audio_dec.c b/libavdevice/pulse_audio_dec.c
index c780d607a0..8d440c5621 100644
--- a/libavdevice/pulse_audio_dec.c
+++ b/libavdevice/pulse_audio_dec.c
@@ -371,6 +371,7 @@ static int pulse_get_device_list(AVFormatContext *h, AVDeviceInfoList *device_li
 
 #define OFFSET(a) offsetof(PulseData, a)
 #define D AV_OPT_FLAG_DECODING_PARAM
+#define DEPR AV_OPT_FLAG_DEPRECATED
 
 static const AVOption options[] = {
     { "server",        "set PulseAudio server",                             OFFSET(server),        AV_OPT_TYPE_STRING, {.str = NULL},     0, 0, D },
@@ -378,7 +379,7 @@ static const AVOption options[] = {
     { "stream_name",   "set stream description",                            OFFSET(stream_name),   AV_OPT_TYPE_STRING, {.str = "record"}, 0, 0, D },
     { "sample_rate",   "set sample rate in Hz",                             OFFSET(sample_rate),   AV_OPT_TYPE_INT,    {.i64 = 48000},    1, INT_MAX, D },
     { "channels",      "set number of audio channels",                      OFFSET(channels),      AV_OPT_TYPE_INT,    {.i64 = 2},        1, INT_MAX, D },
-    { "frame_size",    "set number of bytes per frame",                     OFFSET(frame_size),    AV_OPT_TYPE_INT,    {.i64 = 1024},     1, INT_MAX, D },
+    { "frame_size",    "set number of bytes per frame",                     OFFSET(frame_size),    AV_OPT_TYPE_INT,    {.i64 = 1024},     1, INT_MAX, D | DEPR },
     { "fragment_size", "set buffering size, affects latency and cpu usage", OFFSET(fragment_size), AV_OPT_TYPE_INT,    {.i64 = -1},      -1, INT_MAX, D },
     { "wallclock",     "set the initial pts using the current time",     OFFSET(wallclock),     AV_OPT_TYPE_INT,    {.i64 = 1},       -1, 1, D },
     { NULL },
-- 
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-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [FFmpeg-devel] [PATCH 1/3] Revert "avdevice/pulse_audio_dec: only set adjust latency flag if fragment_size is not set"
  2022-06-11 18:16 [FFmpeg-devel] [PATCH 1/3] Revert "avdevice/pulse_audio_dec: only set adjust latency flag if fragment_size is not set" Marton Balint
  2022-06-11 18:16 ` [FFmpeg-devel] [PATCH 2/3] avdevice/pulse_audio_dec: reduce default fragment size Marton Balint
  2022-06-11 18:16 ` [FFmpeg-devel] [PATCH 3/3] avdevice/pulse_audio_dec: deprecate frame_size option Marton Balint
@ 2022-06-16 19:37 ` Marton Balint
  2 siblings, 0 replies; 4+ messages in thread
From: Marton Balint @ 2022-06-16 19:37 UTC (permalink / raw)
  To: FFmpeg development discussions and patches



On Sat, 11 Jun 2022, Marton Balint wrote:

> This reverts commit 7f059a250bb7bcbf7bba537c1a059a5934413035.
>
> Apparently adjusting latency makes a difference even if fragment size is specifed.
>
> Signed-off-by: Marton Balint <cus@passwd.hu>
> ---
> libavdevice/pulse_audio_dec.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/libavdevice/pulse_audio_dec.c b/libavdevice/pulse_audio_dec.c
> index a33d1afd1f..ed094fd250 100644
> --- a/libavdevice/pulse_audio_dec.c
> +++ b/libavdevice/pulse_audio_dec.c
> @@ -220,7 +220,7 @@ static av_cold int pulse_read_header(AVFormatContext *s)
>
>     ret = pa_stream_connect_record(pd->stream, device, &attr,
>                                     PA_STREAM_INTERPOLATE_TIMING
> -                                    | (pd->fragment_size == -1 ? PA_STREAM_ADJUST_LATENCY : 0)
> +                                    |PA_STREAM_ADJUST_LATENCY
>                                     |PA_STREAM_AUTO_TIMING_UPDATE);

Applied the series.

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

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

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2022-06-16 19:38 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-11 18:16 [FFmpeg-devel] [PATCH 1/3] Revert "avdevice/pulse_audio_dec: only set adjust latency flag if fragment_size is not set" Marton Balint
2022-06-11 18:16 ` [FFmpeg-devel] [PATCH 2/3] avdevice/pulse_audio_dec: reduce default fragment size Marton Balint
2022-06-11 18:16 ` [FFmpeg-devel] [PATCH 3/3] avdevice/pulse_audio_dec: deprecate frame_size option Marton Balint
2022-06-16 19:37 ` [FFmpeg-devel] [PATCH 1/3] Revert "avdevice/pulse_audio_dec: only set adjust latency flag if fragment_size is not set" Marton Balint

Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
		ffmpegdev@gitmailbox.com
	public-inbox-index ffmpegdev

Example config snippet for mirrors.


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git