[vlc-devel] [PATCH] hxxx: move the common H26x NAL parsing code in a common static library

Rémi Denis-Courmont remi at remlab.net
Mon Nov 20 13:24:03 CET 2017


Le 20 novembre 2017 11:45:14 GMT+02:00, Steve Lhomme <robux4 at videolabs.io> a écrit :
>--
>replaces https://patches.videolan.org/patch/18706/
>- fix rebase and building
>replaces https://patches.videolan.org/patch/18614/
>- apply on top of https://patches.videolan.org/patch/18694/
>- add more common code
>- make the internal lib link with -static
>---
>modules/codec/Makefile.am      | 50
>+++++++++++++++++++-----------------------
> modules/demux/Makefile.am      |  9 ++++----
> modules/mux/Makefile.am        |  5 ++---
> modules/packetizer/Makefile.am | 17 +++++---------
> 4 files changed, 35 insertions(+), 46 deletions(-)
>
>diff --git a/modules/codec/Makefile.am b/modules/codec/Makefile.am
>index 5044c06927..28968dcdd4 100644
>--- a/modules/codec/Makefile.am
>+++ b/modules/codec/Makefile.am
>@@ -96,6 +96,15 @@ codec_LTLIBRARIES += $(LTLIBwma_fixed)
> 
> ### Video codecs ###
> 
>+libhxxx_la_SOURCES = codec/hxxx_helper.c codec/hxxx_helper.h \
>+	packetizer/hxxx_nal.h packetizer/hxxx_nal.c \
>+	packetizer/hxxx_sei.h packetizer/hxxx_sei.c \
>+	packetizer/h264_nal.c packetizer/h264_nal.h \
>+	packetizer/hevc_nal.c packetizer/hevc_nal.h \
>+	packetizer/hxxx_common.c packetizer/hxxx_common.h
>+libhxxx_la_LDFLAGS = -static
>+noinst_LTLIBRARIES += libhxxx.la
>+
> libcdg_plugin_la_SOURCES = codec/cdg.c
> codec_LTLIBRARIES += libcdg_plugin.la
> 
>@@ -338,12 +347,8 @@ codec_LTLIBRARIES += $(LTLIBoggspots)
> 
> libvideotoolbox_plugin_la_SOURCES = \
> 	codec/vt_utils.c codec/vt_utils.h \
>-	codec/videotoolbox.m codec/hxxx_helper.c codec/hxxx_helper.h \
>-	packetizer/hxxx_nal.h packetizer/hxxx_nal.c \
>-	packetizer/hxxx_sei.h packetizer/hxxx_sei.c \
>-	packetizer/h264_slice.c packetizer/h264_slice.h \
>-	packetizer/h264_nal.c packetizer/h264_nal.h \
>-	packetizer/hevc_nal.c packetizer/hevc_nal.h
>+	codec/videotoolbox.m \
>+	packetizer/h264_slice.c packetizer/h264_slice.h
> if HAVE_OSX
>libvideotoolbox_plugin_la_OBJCFLAGS = $(AM_OBJCFLAGS)
>-mmacosx-version-min=10.8
> endif
>@@ -353,7 +358,7 @@ endif
> if HAVE_TVOS
>libvideotoolbox_plugin_la_OBJCFLAGS = $(AM_OBJCFLAGS)
>-mtvos-version-min=10.2
> endif
>-libvideotoolbox_plugin_la_LIBADD = libchroma_copy.la
>+libvideotoolbox_plugin_la_LIBADD = libchroma_copy.la libhxxx.la
>libvideotoolbox_plugin_la_LDFLAGS = $(AM_LDFLAGS) -rpath '$(codecdir)'
>-Wl,-framework,Foundation -Wl,-framework,VideoToolbox
>-Wl,-framework,CoreMedia -Wl,-framework,CoreVideo
> EXTRA_LTLIBRARIES += libvideotoolbox_plugin.la
> codec_LTLIBRARIES += $(LTLIBvideotoolbox)
>@@ -418,10 +423,8 @@ endif
> libdxva2_plugin_la_SOURCES = \
>	codec/avcodec/dxva2.c codec/avcodec/directx_va.c
>codec/avcodec/directx_va.h \
>codec/avcodec/va_surface.c codec/avcodec/va_surface.h
>codec/avcodec/va_surface_internal.h \
>-	packetizer/h264_nal.c packetizer/h264_nal.h \
>-	packetizer/hevc_nal.c packetizer/hevc_nal.h \
> 	video_chroma/d3d9_fmt.h
>-libdxva2_plugin_la_LIBADD = $(LIBCOM) -lshlwapi -luuid
>+libdxva2_plugin_la_LIBADD = libhxxx.la $(LIBCOM) -lshlwapi -luuid
> if HAVE_AVCODEC_DXVA2
> codec_LTLIBRARIES += libdxva2_plugin.la
> endif
>@@ -435,10 +438,8 @@ endif
> 
> libd3d11va_plugin_la_SOURCES = \
>	codec/avcodec/d3d11va.c codec/avcodec/directx_va.c
>codec/avcodec/directx_va.h \
>-        codec/avcodec/va_surface.c codec/avcodec/va_surface.h
>codec/avcodec/va_surface_internal.h \
>-	packetizer/h264_nal.c packetizer/h264_nal.h \
>-	packetizer/hevc_nal.c packetizer/hevc_nal.h
>-libd3d11va_plugin_la_LIBADD = libd3d11_common.la $(LIBCOM) -luuid
>+        codec/avcodec/va_surface.c codec/avcodec/va_surface.h
>codec/avcodec/va_surface_internal.h
>+libd3d11va_plugin_la_LIBADD = libd3d11_common.la libhxxx.la $(LIBCOM)
>-luuid
> if HAVE_WINSTORE
> libd3d11va_plugin_la_LIBADD += -ld3d11
> endif
>@@ -462,8 +463,6 @@ noinst_HEADERS += \
> 
> libomxil_plugin_la_SOURCES = \
> 	codec/omxil/utils.c codec/omxil/omxil_utils.h \
>-	packetizer/h264_nal.c packetizer/h264_nal.h \
>-	packetizer/hevc_nal.c packetizer/hevc_nal.h \
> 	codec/omxil/qcom.c codec/omxil/qcom.h \
>	codec/omxil/omxil.c codec/omxil/omxil.h codec/omxil/omxil_core.c
>codec/omxil/omxil_core.h
> if HAVE_ANDROID
>@@ -471,7 +470,7 @@ libomxil_plugin_la_SOURCES +=
>video_output/android/utils.c video_output/android/
> 	video_output/android/display.h
> endif
>libomxil_plugin_la_CPPFLAGS = $(AM_CPPFLAGS) -I$(srcdir)/codec/omxil
>$(CFLAGS_omxil)
>-libomxil_plugin_la_LIBADD = libchroma_copy.la $(LIBDL)
>+libomxil_plugin_la_LIBADD = libchroma_copy.la libhxxx.la $(LIBDL)
> libomxil_plugin_la_LDFLAGS = $(AM_LDFLAGS) -rpath '$(codecdir)'
> 
>libomxil_vout_plugin_la_SOURCES = codec/omxil/vout.c
>codec/omxil/omxil_core.c codec/omxil/utils.c codec/omxil/qcom.c
>@@ -487,12 +486,8 @@ libmediacodec_plugin_la_CPPFLAGS = $(AM_CPPFLAGS)
>-I$(srcdir)/codec/omxil
>libmediacodec_plugin_la_SOURCES = codec/omxil/mediacodec.c
>codec/omxil/mediacodec.h \
>	codec/omxil/mediacodec_jni.c codec/omxil/mediacodec_ndk.c
>codec/omxil/utils.c \
> 	video_output/android/utils.c video_output/android/utils.h \
>-	video_output/android/display.h \
>-	codec/hxxx_helper.c codec/hxxx_helper.h \
>-	packetizer/hxxx_nal.h packetizer/hxxx_nal.c \
>-	packetizer/h264_nal.c packetizer/h264_nal.h \
>-	packetizer/hevc_nal.c packetizer/hevc_nal.h
>-libmediacodec_plugin_la_LIBADD = libchroma_copy.la 
>+	video_output/android/display.h
>+libmediacodec_plugin_la_LIBADD = libchroma_copy.la libhxxx.la
> codec_LTLIBRARIES += $(LTLIBomxil) $(LTLIBomxil_vout)
> EXTRA_LTLIBRARIES += libomxil_plugin.la libomxil_vout_plugin.la
> if HAVE_ANDROID
>@@ -577,9 +572,9 @@ codec_LTLIBRARIES += $(LTLIBtwolame)
> 
> ### Hardware encoders ###
> 
>-libcrystalhd_plugin_la_SOURCES = codec/crystalhd.c
>packetizer/h264_nal.c packetizer/h264_nal.h
>+libcrystalhd_plugin_la_SOURCES = codec/crystalhd.c
> libcrystalhd_plugin_la_LDFLAGS = $(AM_LDFLAGS) -rpath '$(codecdir)'
>-libcrystalhd_plugin_la_LIBADD = $(LIBS_crystalhd)
>+libcrystalhd_plugin_la_LIBADD = $(LIBS_crystalhd) libhxxx.la
> EXTRA_LTLIBRARIES += libcrystalhd_plugin.la
> codec_LTLIBRARIES += $(LTLIBcrystalhd)
> 
>@@ -601,9 +596,10 @@ libdmo_plugin_la_LIBADD += $(LIBCOM) -luuid
> codec_LTLIBRARIES += libdmo_plugin.la
> endif
> 
>-libmft_plugin_la_SOURCES = codec/mft.c packetizer/h264_nal.c
>packetizer/h264_nal.h
>+libmft_plugin_la_SOURCES = codec/mft.c
>+libmft_plugin_la_LIBADD = libhxxx.la
> if HAVE_WIN32
>-libmft_plugin_la_LIBADD = $(LIBCOM) -luuid -lmfuuid -lmfplat
>+libmft_plugin_la_LIBADD += $(LIBCOM) -luuid -lmfuuid -lmfplat
> codec_LTLIBRARIES += libmft_plugin.la
> endif
> 
>diff --git a/modules/demux/Makefile.am b/modules/demux/Makefile.am
>index 1151a14c26..bc3a55550f 100644
>--- a/modules/demux/Makefile.am
>+++ b/modules/demux/Makefile.am
>@@ -171,8 +171,8 @@ libes_plugin_la_SOURCES  = demux/mpeg/es.c \
>                        packetizer/dts_header.c packetizer/dts_header.h
> demux_LTLIBRARIES += libes_plugin.la
> 
>-libh26x_plugin_la_SOURCES = demux/mpeg/h26x.c \
>-                            packetizer/h264_nal.c
>packetizer/hevc_nal.h
>+libh26x_plugin_la_SOURCES = demux/mpeg/h26x.c
>+libh26x_plugin_la_LIBADD = libhxxx.la
> demux_LTLIBRARIES += libh26x_plugin.la
> 
> libmkv_plugin_la_SOURCES = \
>@@ -449,8 +449,7 @@ libadaptive_smooth_SOURCES = \
>     demux/smooth/SmoothManager.cpp \
>     demux/smooth/SmoothStream.hpp \
>     demux/smooth/SmoothStream.cpp
>-libadaptive_smooth_SOURCES += mux/mp4/libmp4mux.c mux/mp4/libmp4mux.h
>\
>-				packetizer/h264_nal.c packetizer/h264_nal.h
>+libadaptive_smooth_SOURCES += mux/mp4/libmp4mux.c mux/mp4/libmp4mux.h
> 
> libadaptive_plugin_la_SOURCES += $(libadaptive_hls_SOURCES)
> libadaptive_plugin_la_SOURCES += $(libadaptive_dash_SOURCES)
>@@ -458,7 +457,7 @@ libadaptive_plugin_la_SOURCES +=
>$(libadaptive_smooth_SOURCES)
> libadaptive_plugin_la_SOURCES += demux/adaptive/adaptive.cpp
> libadaptive_plugin_la_SOURCES += demux/mp4/libmp4.c demux/mp4/libmp4.h
>libadaptive_plugin_la_CXXFLAGS = $(AM_CXXFLAGS)
>-I$(srcdir)/demux/adaptive
>-libadaptive_plugin_la_LIBADD = $(SOCKET_LIBS) $(LIBM)
>+libadaptive_plugin_la_LIBADD = libhxxx.la $(SOCKET_LIBS) $(LIBM)
> if HAVE_ZLIB
> libadaptive_plugin_la_LIBADD += -lz
> endif
>diff --git a/modules/mux/Makefile.am b/modules/mux/Makefile.am
>index 2dd5fcd246..d2fe086c6f 100644
>--- a/modules/mux/Makefile.am
>+++ b/modules/mux/Makefile.am
>@@ -6,9 +6,8 @@ libmux_asf_plugin_la_SOURCES = mux/asf.c
>demux/asf/libasf_guid.h
> libmux_avi_plugin_la_SOURCES = mux/avi.c
> libmux_mp4_plugin_la_SOURCES = mux/mp4/mp4.c \
> 	mux/mp4/libmp4mux.c mux/mp4/libmp4mux.h \
>-       demux/mp4/libmp4.h \
>-	packetizer/hxxx_nal.c packetizer/hxxx_nal.h \
>-        packetizer/h264_nal.c packetizer/h264_nal.h
>+       demux/mp4/libmp4.h
>+libmux_mp4_plugin_la_LIBADD = libhxxx.la
> libmux_mpjpeg_plugin_la_SOURCES = mux/mpjpeg.c
> libmux_ps_plugin_la_SOURCES = \
> 	mux/mpeg/pes.c mux/mpeg/pes.h \
>diff --git a/modules/packetizer/Makefile.am
>b/modules/packetizer/Makefile.am
>index 102ae38148..42693c36e6 100644
>--- a/modules/packetizer/Makefile.am
>+++ b/modules/packetizer/Makefile.am
>@@ -6,21 +6,16 @@ libpacketizer_mpeg4video_plugin_la_SOURCES =
>packetizer/mpeg4video.c
> libpacketizer_mpeg4audio_plugin_la_SOURCES = packetizer/mpeg4audio.c
> libpacketizer_mpegaudio_plugin_la_SOURCES = packetizer/mpegaudio.c
> libpacketizer_h264_plugin_la_SOURCES = \
>-	packetizer/h264_nal.c packetizer/h264_nal.h \
> 	packetizer/h264_slice.c packetizer/h264_slice.h \
>-	packetizer/h264.c packetizer/hxxx_nal.h \
>-	packetizer/hxxx_sei.c packetizer/hxxx_sei.h \
>-	packetizer/hxxx_common.c packetizer/hxxx_common.h
>-libpacketizer_vc1_plugin_la_SOURCES = packetizer/vc1.c \
>-        packetizer/hxxx_nal.h
>+	packetizer/h264.c
>+libpacketizer_h264_plugin_la_LIBADD = libhxxx.la
>+libpacketizer_vc1_plugin_la_SOURCES = packetizer/vc1.c
>+libpacketizer_vc1_plugin_la_LIBADD = libhxxx.la
> libpacketizer_mlp_plugin_la_SOURCES = packetizer/mlp.c
> libpacketizer_dirac_plugin_la_SOURCES = packetizer/dirac.c
> libpacketizer_flac_plugin_la_SOURCES = packetizer/flac.c
>-libpacketizer_hevc_plugin_la_SOURCES = packetizer/hevc.c \
>-	packetizer/hevc_nal.h packetizer/hevc_nal.c \
>-	packetizer/hxxx_sei.c packetizer/hxxx_sei.h \
>-	packetizer/hxxx_nal.h \
>-	packetizer/hxxx_common.c packetizer/hxxx_common.h
>+libpacketizer_hevc_plugin_la_SOURCES = packetizer/hevc.c
>+libpacketizer_hevc_plugin_la_LIBADD = libhxxx.la
>libpacketizer_a52_plugin_la_SOURCES = packetizer/a52.c packetizer/a52.h
> libpacketizer_dts_plugin_la_SOURCES = packetizer/dts.c \
> 	packetizer/dts_header.c packetizer/dts_header.h
>-- 
>2.14.2
>
>_______________________________________________
>vlc-devel mailing list
>To unsubscribe or modify your subscription options:
>https://mailman.videolan.org/listinfo/vlc-devel

I still don't see the point. The compilation time savings are negligible, and the run-time savings are nonexistent.

So this is just a cleanup, not what I'd merge in code freeze.
-- 
Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser ma brièveté.


More information about the vlc-devel mailing list