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 v2] lavu/stereo3d: change the horizontal FOV field to a rational
@ 2024-06-23 14:14 Lynne via ffmpeg-devel
  2024-06-24  0:13 ` James Almer
  0 siblings, 1 reply; 4+ messages in thread
From: Lynne via ffmpeg-devel @ 2024-06-23 14:14 UTC (permalink / raw)
  To: ffmpeg-devel; +Cc: Lynne

This avoids hardcoding any implementation-specific limitiations as
part of the API, and allows for future expandability.

This also allows API users to more conveniently convert the
values into floats without hardcoding specific conversion constants.

The API was committed 2 days ago, so changing this field now
is within the realms of acceptable.
---
 fftools/ffprobe.c                            | 2 +-
 libavformat/dump.c                           | 5 +++--
 libavformat/mov.c                            | 3 ++-
 libavutil/stereo3d.c                         | 1 +
 libavutil/stereo3d.h                         | 4 ++--
 tests/ref/fate/matroska-spherical-mono       | 2 +-
 tests/ref/fate/matroska-spherical-mono-remux | 4 ++--
 tests/ref/fate/matroska-stereo_mode          | 8 ++++----
 tests/ref/fate/matroska-vp8-alpha-remux      | 2 +-
 tests/ref/fate/mov-spherical-mono            | 2 +-
 10 files changed, 18 insertions(+), 15 deletions(-)

diff --git a/fftools/ffprobe.c b/fftools/ffprobe.c
index d7ba980ff9..b69a75ff9a 100644
--- a/fftools/ffprobe.c
+++ b/fftools/ffprobe.c
@@ -2548,7 +2548,7 @@ static void print_pkt_side_data(WriterContext *w,
             print_str("primary_eye", av_stereo3d_primary_eye_name(stereo->primary_eye));
             print_int("baseline", stereo->baseline);
             print_q("horizontal_disparity_adjustment", stereo->horizontal_disparity_adjustment, '/');
-            print_int("horizontal_field_of_view", stereo->horizontal_field_of_view);
+            print_q("horizontal_field_of_view", stereo->horizontal_field_of_view, '/');
         } else if (sd->type == AV_PKT_DATA_SPHERICAL) {
             const AVSphericalMapping *spherical = (AVSphericalMapping *)sd->data;
             print_str("projection", av_spherical_projection_name(spherical->projection));
diff --git a/libavformat/dump.c b/libavformat/dump.c
index 61a2c6a29f..b71b5356dc 100644
--- a/libavformat/dump.c
+++ b/libavformat/dump.c
@@ -267,8 +267,9 @@ static void dump_stereo3d(void *ctx, const AVPacketSideData *sd, int log_level)
     if (stereo->horizontal_disparity_adjustment.num && stereo->horizontal_disparity_adjustment.den)
         av_log(ctx, log_level, ", horizontal_disparity_adjustment: %d/%d",
                stereo->horizontal_disparity_adjustment.num, stereo->horizontal_disparity_adjustment.den);
-    if (stereo->horizontal_field_of_view)
-        av_log(ctx, log_level, ", horizontal_field_of_view: %"PRIu32"", stereo->horizontal_field_of_view);
+    if (stereo->horizontal_field_of_view.num && stereo->horizontal_field_of_view.den)
+        av_log(ctx, log_level, ", horizontal_field_of_view: %d/%d", stereo->horizontal_field_of_view.num,
+               stereo->horizontal_field_of_view.den);
 
     if (stereo->flags & AV_STEREO3D_FLAG_INVERT)
         av_log(ctx, log_level, " (inverted)");
diff --git a/libavformat/mov.c b/libavformat/mov.c
index f08fec3fb6..fe8a963c6e 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -6782,7 +6782,8 @@ static int mov_read_hfov(MOVContext *c, AVIOContext *pb, MOVAtom atom)
             return AVERROR(ENOMEM);
     }
 
-    sc->stereo3d->horizontal_field_of_view = avio_rb32(pb);
+    sc->stereo3d->horizontal_field_of_view.num = avio_rb32(pb);
+    sc->stereo3d->horizontal_field_of_view.den = 1000; // thousands of a degree
 
     return 0;
 }
diff --git a/libavutil/stereo3d.c b/libavutil/stereo3d.c
index 19e81e4124..ad6064e5d9 100644
--- a/libavutil/stereo3d.c
+++ b/libavutil/stereo3d.c
@@ -29,6 +29,7 @@
 static void get_defaults(AVStereo3D *stereo)
 {
     stereo->horizontal_disparity_adjustment = (AVRational) { 0, 1 };
+    stereo->horizontal_field_of_view = (AVRational) { 0, 1 };
 }
 
 AVStereo3D *av_stereo3d_alloc(void)
diff --git a/libavutil/stereo3d.h b/libavutil/stereo3d.h
index 00a5c3900e..d8b191118c 100644
--- a/libavutil/stereo3d.h
+++ b/libavutil/stereo3d.h
@@ -224,9 +224,9 @@ typedef struct AVStereo3D {
     AVRational horizontal_disparity_adjustment;
 
     /**
-     * Horizontal field of view in thousanths of a degree. Zero if unset.
+     * Horizontal field of view, in degrees. Zero if unset.
      */
-    uint32_t horizontal_field_of_view;
+    AVRational horizontal_field_of_view;
 } AVStereo3D;
 
 /**
diff --git a/tests/ref/fate/matroska-spherical-mono b/tests/ref/fate/matroska-spherical-mono
index b108596350..8b011e332f 100644
--- a/tests/ref/fate/matroska-spherical-mono
+++ b/tests/ref/fate/matroska-spherical-mono
@@ -7,7 +7,7 @@ view=packed
 primary_eye=none
 baseline=0
 horizontal_disparity_adjustment=0/1
-horizontal_field_of_view=0
+horizontal_field_of_view=0/0
 [/SIDE_DATA]
 [SIDE_DATA]
 side_data_type=Spherical Mapping
diff --git a/tests/ref/fate/matroska-spherical-mono-remux b/tests/ref/fate/matroska-spherical-mono-remux
index eec41b77f3..31dbf6cdd8 100644
--- a/tests/ref/fate/matroska-spherical-mono-remux
+++ b/tests/ref/fate/matroska-spherical-mono-remux
@@ -31,7 +31,7 @@ view=packed
 primary_eye=none
 baseline=0
 horizontal_disparity_adjustment=0/1
-horizontal_field_of_view=0
+horizontal_field_of_view=0/0
 [/SIDE_DATA]
 [SIDE_DATA]
 side_data_type=Spherical Mapping
@@ -60,7 +60,7 @@ view=packed
 primary_eye=none
 baseline=0
 horizontal_disparity_adjustment=0/1
-horizontal_field_of_view=0
+horizontal_field_of_view=0/0
 [/SIDE_DATA]
 [SIDE_DATA]
 side_data_type=Spherical Mapping
diff --git a/tests/ref/fate/matroska-stereo_mode b/tests/ref/fate/matroska-stereo_mode
index 26c325b20e..656a712e89 100644
--- a/tests/ref/fate/matroska-stereo_mode
+++ b/tests/ref/fate/matroska-stereo_mode
@@ -136,7 +136,7 @@ view=packed
 primary_eye=none
 baseline=0
 horizontal_disparity_adjustment=0/1
-horizontal_field_of_view=0
+horizontal_field_of_view=0/0
 [/SIDE_DATA]
 [/STREAM]
 [STREAM]
@@ -156,7 +156,7 @@ view=packed
 primary_eye=none
 baseline=0
 horizontal_disparity_adjustment=0/1
-horizontal_field_of_view=0
+horizontal_field_of_view=0/0
 [/SIDE_DATA]
 [/STREAM]
 [STREAM]
@@ -174,7 +174,7 @@ view=packed
 primary_eye=none
 baseline=0
 horizontal_disparity_adjustment=0/1
-horizontal_field_of_view=0
+horizontal_field_of_view=0/0
 [/SIDE_DATA]
 [/STREAM]
 [STREAM]
@@ -193,7 +193,7 @@ view=packed
 primary_eye=none
 baseline=0
 horizontal_disparity_adjustment=0/1
-horizontal_field_of_view=0
+horizontal_field_of_view=0/0
 [/SIDE_DATA]
 [/STREAM]
 [STREAM]
diff --git a/tests/ref/fate/matroska-vp8-alpha-remux b/tests/ref/fate/matroska-vp8-alpha-remux
index 06bcc4b4ba..bfc25fea7a 100644
--- a/tests/ref/fate/matroska-vp8-alpha-remux
+++ b/tests/ref/fate/matroska-vp8-alpha-remux
@@ -39,6 +39,6 @@ view=packed
 primary_eye=none
 baseline=0
 horizontal_disparity_adjustment=0/1
-horizontal_field_of_view=0
+horizontal_field_of_view=0/0
 [/SIDE_DATA]
 [/STREAM]
diff --git a/tests/ref/fate/mov-spherical-mono b/tests/ref/fate/mov-spherical-mono
index b108596350..065b109a41 100644
--- a/tests/ref/fate/mov-spherical-mono
+++ b/tests/ref/fate/mov-spherical-mono
@@ -7,7 +7,7 @@ view=packed
 primary_eye=none
 baseline=0
 horizontal_disparity_adjustment=0/1
-horizontal_field_of_view=0
+horizontal_field_of_view=0/1
 [/SIDE_DATA]
 [SIDE_DATA]
 side_data_type=Spherical Mapping
-- 
2.45.1.288.g0e0cd299f1
_______________________________________________
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:[~2024-06-24 21:54 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-06-23 14:14 [FFmpeg-devel] [PATCH v2] lavu/stereo3d: change the horizontal FOV field to a rational Lynne via ffmpeg-devel
2024-06-24  0:13 ` James Almer
2024-06-24 15:51   ` Derek Buitenhuis
2024-06-24 21:54     ` Lynne via ffmpeg-devel

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