[vlc-devel] [PATCH 00/28] Rational numbers

Filip Roséen filip at atch.se
Sun Apr 2 23:26:13 CEST 2017


Hi Steve,

Have you verified that using `vlc_rational_t` in all places you
propose changes does not lead to unexpected behavior?

Such as making sure that the relevant spec where the values are coming
from does not allow negative values for calculating the ratio, as well
as that all "incoming" values really fit inside an `unsigned` on all
platforms?

On 2017-03-31 18:14, Steve Lhomme wrote:

> While working on HDR metadata I noticed that it would me more accurate to
> handle them as rational numbers. But it seems we do not have that in the core.
> 
> So I went ahead and added vlc_rational_t.
> 
> Only the first 3 patches would be nice to merge, the rest is extra by using the
> type where rational numbers were already used.
> 
> Steve Lhomme (28):
>   vlc_vout_wrapper: the sar is always unsigned
>   core: add a vlc_rational_t type for unsigned rational numbers
>   core: turn mastering colour luminance into rational numbers
>   avcodec/avformat: simplify AVRational copying
>   avcommon: add a conversion from AVRational to vlc_rational_t
>   always call var_InheritURational with a vlc_rational_t based output
>   core: change var_InheritURational to output a vlc_rational_t
>   mpegvideo: use vlc_rational_t for the internal frame rate
>   linsys: use vlc_rational_t internally
>   demux: ogg: use vlc_rational_t internally
>   packetizer: mpeg4video: use vlc_rational_t internally
>   demux: mpeg: use vlc_rational_t internally
>   mmal: vout: use vlc_rational_t internally for the frame rate
>   vlc_es: use vlc_rational_t for the frame rate
>   modules: simplify some vlc_rational_t value copying
>   simplify some frame rate checks
>   dvdread: use a vlc_rational_t internally for the SAR
>   codec: libmpeg2: use a vlc_rational_t internally for the SAR
>   packetizer: h264: use a vlc_rational_t internally for the SAR
>   stream_out: mosaic_bridge: use a vlc_rational_t internally for the SAR
>   vlc_es: use a vlc_rationale_t for the SAR
>   codec: avcodec: copy the source max light levels into the output
>     picture
>   access: dvdnav: use vlc_rational_t internally for the SAR
>   hxxx_helper: simplify h264_helper_get_current_sar using vlc_rational_t
>   demux: mp4: simplify TrackGetESSampleRate using vlc_rational_t
>   packetizer: hevc: simplify hevc_get_frame_rate() using vlc_rational_t
>   simplifying copying data between vlc_rational_t
>   do not test vlc_rational_t for negative values
> 
>  include/vlc_common.h                               |  4 +
>  include/vlc_es.h                                   | 14 ++--
>  include/vlc_fourcc.h                               | 10 +--
>  include/vlc_variables.h                            |  4 +-
>  include/vlc_vout_display.h                         |  5 +-
>  include/vlc_vout_wrapper.h                         |  5 +-
>  lib/media.c                                        |  8 +-
>  lib/media_player.c                                 |  6 +-
>  modules/access/avcapture.m                         |  4 +-
>  modules/access/dcp/dcp.cpp                         |  4 +-
>  modules/access/decklink.cpp                        | 20 ++---
>  modules/access/dshow/dshow.cpp                     | 13 ++-
>  modules/access/dvdnav.c                            | 24 +++---
>  modules/access/dvdread.c                           | 22 +++--
>  modules/access/imem.c                              | 17 ++--
>  modules/access/linsys/linsys_hdsdi.c               | 37 ++++-----
>  modules/access/linsys/linsys_sdi.c                 | 43 +++++-----
>  modules/access/rdp.c                               |  4 +-
>  modules/access/screen/mac.c                        |  8 +-
>  modules/access/screen/wayland.c                    |  6 +-
>  modules/access/screen/win32.c                      |  2 +-
>  modules/access/screen/xcb.c                        |  6 +-
>  modules/access/shm.c                               |  6 +-
>  modules/access/timecode.c                          |  7 +-
>  modules/access/v4l2/demux.c                        | 14 ++--
>  modules/access/v4l2/video.c                        | 11 ++-
>  modules/access/vnc.c                               |  6 +-
>  modules/codec/aom.c                                |  6 +-
>  modules/codec/arib/substext.h                      |  6 +-
>  modules/codec/avcodec/avcommon.h                   |  5 ++
>  modules/codec/avcodec/d3d11va.c                    |  4 +-
>  modules/codec/avcodec/directx_va.c                 |  3 +-
>  modules/codec/avcodec/dxva2.c                      |  6 +-
>  modules/codec/avcodec/encoder.c                    | 24 ++----
>  modules/codec/avcodec/video.c                      | 80 +++++++++---------
>  modules/codec/bpg.c                                |  4 +-
>  modules/codec/cdg.c                                |  4 +-
>  modules/codec/crystalhd.c                          |  8 +-
>  modules/codec/cvdsub.c                             |  4 +-
>  modules/codec/daala.c                              | 30 +++----
>  modules/codec/dmo/dmo.c                            | 11 ++-
>  modules/codec/dvbsub.c                             |  8 +-
>  modules/codec/gstreamer/gstdecode.c                | 20 ++---
>  .../codec/gstreamer/gstvlcpictureplaneallocator.c  |  4 +-
>  modules/codec/hxxx_helper.c                        |  5 +-
>  modules/codec/hxxx_helper.h                        |  2 +-
>  modules/codec/jpeg.c                               |  4 +-
>  modules/codec/kate.c                               |  4 +-
>  modules/codec/libmpeg2.c                           | 42 +++++-----
>  modules/codec/oggspots.c                           |  8 +-
>  modules/codec/omxil/omxil.c                        | 29 +++----
>  modules/codec/png.c                                |  4 +-
>  modules/codec/qsv.c                                | 10 +--
>  modules/codec/rawvideo.c                           | 12 +--
>  modules/codec/schroedinger.c                       | 22 ++---
>  modules/codec/scte27.c                             |  4 +-
>  modules/codec/sdl_image.c                          |  4 +-
>  modules/codec/spudec/parse.c                       |  4 +-
>  modules/codec/substext.h                           | 14 ++--
>  modules/codec/subsusf.c                            |  2 +-
>  modules/codec/svcdsub.c                            |  4 +-
>  modules/codec/svg.c                                |  8 +-
>  modules/codec/theora.c                             | 26 +++---
>  modules/codec/videotoolbox.m                       | 20 ++---
>  modules/codec/vpx.c                                | 11 ++-
>  modules/codec/x264.c                               | 18 ++--
>  modules/codec/x265.c                               | 14 ++--
>  modules/codec/xwd.c                                |  4 +-
>  modules/codec/zvbi.c                               |  2 +-
>  modules/demux/asf/asf.c                            | 14 ++--
>  modules/demux/avformat/demux.c                     | 12 ++-
>  modules/demux/avformat/mux.c                       | 25 +++---
>  modules/demux/avi/avi.c                            |  8 +-
>  modules/demux/dirac.c                              |  6 +-
>  modules/demux/image.c                              | 14 ++--
>  modules/demux/mkv/matroska_segment_parse.cpp       | 12 +--
>  modules/demux/mkv/mkv.cpp                          |  4 +-
>  modules/demux/mp4/essetup.c                        |  8 +-
>  modules/demux/mp4/mp4.c                            | 17 ++--
>  modules/demux/mpeg/h26x.c                          | 38 ++++-----
>  modules/demux/mpeg/ts_psi.c                        |  4 +-
>  modules/demux/nuv.c                                |  4 +-
>  modules/demux/ogg.c                                | 50 ++++++-----
>  modules/demux/rawvid.c                             | 55 ++++++-------
>  modules/demux/real.c                               |  4 +-
>  modules/demux/vc1.c                                |  8 +-
>  modules/hw/mmal/codec.c                            |  7 +-
>  modules/hw/mmal/deinterlace.c                      | 15 ++--
>  modules/hw/mmal/vout.c                             | 24 +++---
>  modules/hw/vdpau/deinterlace.c                     |  8 +-
>  modules/misc/stats.c                               |  4 +-
>  modules/mux/asf.c                                  | 18 ++--
>  modules/mux/mp4/libmp4mux.c                        | 14 ++--
>  modules/mux/mp4/mp4.c                              | 22 ++---
>  modules/mux/mpeg/ts.c                              |  8 +-
>  modules/mux/ogg.c                                  | 38 ++++-----
>  modules/packetizer/dirac.c                         |  4 +-
>  modules/packetizer/h264.c                          | 21 +++--
>  modules/packetizer/h264_nal.c                      |  8 +-
>  modules/packetizer/h264_nal.h                      |  2 +-
>  modules/packetizer/hevc.c                          | 21 +++--
>  modules/packetizer/hevc_nal.c                      | 14 ++--
>  modules/packetizer/hevc_nal.h                      |  2 +-
>  modules/packetizer/mpeg4video.c                    | 32 ++++----
>  modules/packetizer/mpegvideo.c                     | 30 ++++---
>  modules/packetizer/vc1.c                           | 14 ++--
>  modules/spu/audiobargraph_v.c                      |  2 +-
>  modules/spu/logo.c                                 |  2 +-
>  modules/spu/marq.c                                 |  2 +-
>  modules/spu/remoteosd.c                            |  2 +-
>  modules/spu/rss.c                                  |  2 +-
>  modules/stream_out/mosaic_bridge.c                 | 38 ++++-----
>  modules/stream_out/transcode/transcode.c           |  2 +-
>  modules/stream_out/transcode/transcode.h           |  2 +-
>  modules/stream_out/transcode/video.c               | 92 ++++++++++-----------
>  modules/text_renderer/freetype/freetype.c          |  4 +-
>  modules/video_chroma/swscale.c                     |  8 +-
>  modules/video_filter/canvas.c                      | 10 +--
>  modules/video_filter/deinterlace/deinterlace.c     |  4 +-
>  modules/video_filter/fps.c                         | 17 ++--
>  modules/video_filter/scene.c                       |  2 +-
>  modules/video_filter/transform.c                   |  7 +-
>  modules/video_output/android/display.c             | 21 +++--
>  modules/video_output/decklink.cpp                  | 10 +--
>  modules/video_output/opengl/internal.h             | 10 +--
>  modules/video_output/win32/direct3d11.c            | 22 ++---
>  modules/video_output/yuv.c                         | 11 ++-
>  modules/video_splitter/wall.c                      |  4 +-
>  modules/visualization/goom.c                       |  2 +-
>  modules/visualization/visual/visual.c              |  4 +-
>  src/input/decoder.c                                | 20 ++---
>  src/input/es_out.c                                 | 17 ++--
>  src/misc/es_format.c                               | 26 +++---
>  src/misc/fourcc_gen.c                              |  1 +
>  src/misc/image.c                                   | 46 +++++------
>  src/misc/picture.c                                 | 24 +++---
>  src/misc/subpicture.c                              |  4 +-
>  src/misc/variables.c                               | 16 ++--
>  src/video_output/display.c                         | 96 +++++++++-------------
>  src/video_output/video_epg.c                       | 14 ++--
>  src/video_output/video_output.c                    | 35 ++++----
>  src/video_output/video_text.c                      |  8 +-
>  src/video_output/video_widgets.c                   | 14 ++--
>  src/video_output/vout_subpictures.c                | 14 ++--
>  test/libvlc/media.c                                |  2 +-
>  test/src/misc/variables.c                          | 58 ++++++-------
>  146 files changed, 996 insertions(+), 1082 deletions(-)
> 
> -- 
> 2.11.1
> 
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/vlc-devel/attachments/20170402/628ffb88/attachment-0001.html>


More information about the vlc-devel mailing list