Skip to content

Commit 48e42b7

Browse files
committed
Intel® Media Transport Library v22.06 release.
Signed-off-by: Du, Frank <[email protected]>
1 parent 19f3e16 commit 48e42b7

File tree

209 files changed

+23884
-4507
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

209 files changed

+23884
-4507
lines changed

CHANGELOG.md

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,19 @@
11
# Change log
22

3-
## Change log for next release:
3+
## Change log for 22.06:
4+
* User frame mode with uframe_pg_callback for rx video session.
5+
* Color format SIMD convert API between RFC4175 YUV422 10bit BE and other LE format, see st_convert_api.h.
6+
* SIMD build and runtime framework.
7+
* Migration suppport for tx/rx video session if the cpu lcore usage is too busy, see ST_FLAG_TX_VIDEO_MIGRATE/ST_FLAG_RX_VIDEO_MIGRATE.
8+
* DMA/DSA helper on SIMD convert API to reduce LLC usage for 4K/8K resolution, see st_convert_api.h.
9+
* Format auto detect for rx video session, see ST20_RX_FLAG_AUTO_DETECT.
10+
* rx: add payload type check in the hdr sanity inspection.
11+
* st22: add frame mode support for tx and rx.
12+
* st22: add pipeline mode support for both tx and rx, see st_pipeline_api.h for the API, tx_st22_pipeline_sample.c/rx_st22_pipeline_sample.c for the sample code.
13+
* st22: add encode/decode plugin sample code, see jpegxs_plugin_sample.c for the sample and kahawai.json for the plugin so config.
14+
* app: json config support for st22 pipeline mode.
15+
* tx/st20: runtime session create/free features, adding runtime ratelimit support.
16+
* st30: support 125us and 80us in audio pacing
417

518
## Change log for Beta 22.04:
619
* Enabled field mode to support 1080i,PAL,NTSC with narrow pacing.

README.md

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,16 @@ The Media Transport Library(Kahawai) is a solution based on DPDK prepared for tr
1111

1212
## 2. Build:
1313
Please refer to [build guide](doc/build.md) for how to build DPDK, the library and the sample application.
14+
Please refer to [build guide](doc/build_WIN.md) for how to build DPDK, the library and the sample application in Windows.
1415

1516
## 3. Run:
16-
Please refer to [run guide](doc/run.md) for how to setup and run the sample app.
17+
Please refer to [run guide](doc/run.md) for how to setup and run the demo pipeline application.
18+
Please refer to [run guide](doc/run_WIN.md) for how to setup and run the demo pipeline application in Windows.
1719

18-
## 4. Coding style:
20+
## 4. Programmers guide:
21+
For how to develop application quickly based on Kahawai library, pls refer to [sample code](app/sample).
22+
23+
## 5. Coding style:
1924
Run below command before opening a PR.
2025
```bash
2126
./format-coding.sh

app/meson.build

Lines changed: 106 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -11,22 +11,34 @@
1111
# express or implied warranties, other than those that are expressly stated
1212
# in the License.
1313

14-
project('Intel(R) ST DPDK sample app', 'c', default_options: ['c_std=gnu11', 'buildtype=release'], version: '0.1',)
14+
project('Intel(R) ST DPDK sample app', 'c', default_options: ['c_std=gnu11', 'buildtype=release'], version: '22.06',)
15+
16+
# allow experimental api
17+
add_global_arguments('-DALLOW_EXPERIMENTAL_API', language : 'c')
18+
19+
#detect os
1520
exec_env = host_machine.system()
1621
set_variable('is_windows', exec_env == 'windows')
17-
#allow experimental api
18-
add_global_arguments('-DALLOW_EXPERIMENTAL_API', language : 'c')
22+
23+
cc = meson.get_compiler('c')
1924

2025
libst_dpdk = dependency('libst_dpdk', required : true)
26+
libm = cc.find_library('m', required : true)
27+
libpthread = cc.find_library('pthread', required : true)
2128
libjson_c = dependency('json-c', required : true)
2229
if not is_windows
23-
libpcap = dependency('pcap', required:true)
30+
libpcap = dependency('pcap', required: true)
31+
endif
32+
libsdl2 = dependency('sdl2', required: true)
33+
libsdl2_ttf = dependency('SDL2_ttf', required: false)
34+
if libsdl2_ttf.found()
35+
add_global_arguments('-DAPP_HAS_SDL2_TTF', language : 'c')
36+
else
37+
message('SDL2_ttf not found')
2438
endif
25-
libsdl2 = dependency('sdl2', required:true)
26-
2739
libopenssl = dependency('openssl', required : true)
2840

29-
#add source file
41+
# add source file
3042
subdir('src')
3143
subdir('tools')
3244
subdir('sample')
@@ -37,123 +49,169 @@ app_c_args = []
3749
#enable warning as error
3850
app_c_args += ['-Werror']
3951
app_c_args += ['-Wall']
52+
4053
if is_windows
41-
libpcap =[]
42-
mingw_root_dir = 'c:\mingw64'
43-
app_c_args += ['-DWINDOWSENV']
44-
app_c_args += ['-Wformat=0']
45-
app_c_args += ['-D__USE_MINGW_ANSI_STDIO']
46-
mingw_include_dir = mingw_root_dir + '''\include'''
47-
windows_include_dir = '..\..\lib\windows'
48-
app_c_args += ['-I' + mingw_include_dir]
49-
app_c_args += ['-I' + windows_include_dir]
50-
51-
libdpdkcflags = run_command('pkg-config', '--cflags', 'libdpdk')
52-
libjsonccflags = run_command('pkg-config', '--cflags', 'json-c')
53-
libsdl2cflags = run_command('pkg-config', '--cflags', 'sdl2')
54-
libdpdklinkflags = run_command('pkg-config', '--static', '--libs', 'libdpdk')
55-
56-
app_c_args += [libdpdkcflags.stdout().strip().split()]
57-
app_c_args += [libjsonccflags.stdout().strip().split()]
58-
app_c_args += [libsdl2cflags.stdout().strip().split()]
54+
libpcap =[]
55+
mingw_root_dir = 'c:\mingw64'
56+
app_c_args += ['-DWINDOWSENV','-D_WIN32_WINNT=0x0600']
57+
app_c_args += ['-Wformat=0']
58+
app_c_args += ['-D__USE_MINGW_ANSI_STDIO']
59+
mingw_include_dir = mingw_root_dir + '''\include'''
60+
windows_include_dir = '..\..\lib\windows'
61+
app_c_args += ['-I' + mingw_include_dir]
62+
app_c_args += ['-I' + windows_include_dir]
63+
64+
libdpdkcflags = run_command('pkg-config', '--cflags', 'libdpdk')
65+
libjsonccflags = run_command('pkg-config', '--cflags', 'json-c')
66+
libsdl2cflags = run_command('pkg-config', '--cflags', 'sdl2')
67+
libsdl2_ttfcflags = run_command('pkg-config', '--cflags', 'sdl2-ttf')
68+
libdpdklinkflags = run_command('pkg-config', '--static', '--libs', 'libdpdk')
69+
libopensslcflags = run_command('pkg-config', '--cflags', 'openssl')
70+
71+
app_c_args += [libdpdkcflags.stdout().strip().split()]
72+
app_c_args += [libjsonccflags.stdout().strip().split()]
73+
app_c_args += [libsdl2cflags.stdout().strip().split()]
74+
app_c_args += [libsdl2_ttfcflags.stdout().strip().split()]
75+
app_c_args += [libopensslcflags.stdout().strip().split()]
5976
endif
6077

61-
#simd build option, enable sse4.2 default, todo: do we need AVX2/AVX512 for app ?
78+
# simd build option, enable sse4.2 default, todo: do we need AVX2/AVX512 for app ?
6279
app_c_args += ['-msse4.2']
6380

6481
app_ld_args = []
6582

66-
app_ld_args += ['-pthread','-lm']
67-
6883
if is_windows
69-
app_ld_args += ['-lmingw32','-lws2_32','-lDbghelp','-lSetupapi','-ldinput8', '-ldxguid', '-ldxerr8', '-lwinmm', '-limm32','-lversion','-lwpcap','-lPacket','-lSDL2','-lSDL2Main','-lmman','-ljson-c']
70-
app_ld_args += ['-Wl,--whole-archive']
71-
app_ld_args += [libdpdklinkflags.stdout().strip().split()]
72-
app_ld_args += ['-Wl,--no-whole-archive']
84+
app_ld_args += ['-lmingw32','-lws2_32','-lDbghelp','-lSetupapi','-ldinput8', '-ldxguid', '-ldxerr8', '-lwinmm', '-limm32','-lversion','-lwpcap','-lPacket','-lSDL2','-lSDL2Main','-lmman','-ljson-c','-ldl']
85+
app_ld_args += ['-Wl,--whole-archive']
86+
app_ld_args += [libdpdklinkflags.stdout().strip().split()]
87+
app_ld_args += ['-Wl,--no-whole-archive']
7388
endif
7489

75-
#build executable
90+
# build executable
7691
executable('RxTxApp', sources,
7792
c_args : app_c_args,
7893
link_args: app_ld_args,
79-
dependencies: [libst_dpdk, libjson_c, libpcap, libsdl2]
94+
dependencies: [libst_dpdk, libjson_c, libpcap, libsdl2, libsdl2_ttf, libm, libpthread]
8095
)
8196

8297
executable('ConvApp', conv_sources,
8398
c_args : app_c_args,
8499
link_args: app_ld_args,
100+
dependencies: [libst_dpdk, ]
85101
)
86102

87-
executable('PerfRfc4175ToYuv422p10le', perf_rfc4175_to_yuv422p10le_sources,
103+
executable('PerfRfc4175422be10ToP10Le', perf_rfc4175_422be10_to_p10le_sources,
88104
c_args : app_c_args,
89105
link_args: app_ld_args,
90-
dependencies: [libst_dpdk]
106+
dependencies: [libst_dpdk, libpthread]
107+
)
108+
109+
executable('PerfP10LeToRfc4175422be10', perf_p10le_to_rfc4175_422be10_sources,
110+
c_args : app_c_args,
111+
link_args: app_ld_args,
112+
dependencies: [libst_dpdk, libpthread]
91113
)
92114

93115
executable('PerfRfc4175422be10ToLe', perf_rfc4175_422be10_to_le_sources,
94116
c_args : app_c_args,
95117
link_args: app_ld_args,
96-
dependencies: [libst_dpdk]
118+
dependencies: [libst_dpdk, libpthread]
119+
)
120+
121+
executable('PerfRfc4175422le10ToBe', perf_rfc4175_422le10_to_be_sources,
122+
c_args : app_c_args,
123+
link_args: app_ld_args,
124+
dependencies: [libst_dpdk, libpthread]
97125
)
98126

99127
executable('PerfRfc4175422be10ToLe8', perf_rfc4175_422be10_to_le8_sources,
100128
c_args : app_c_args,
101129
link_args: app_ld_args,
102-
dependencies: [libst_dpdk]
130+
dependencies: [libst_dpdk, libpthread]
103131
)
104132

105133
executable('PerfRfc4175422be10ToV210', perf_rfc4175_422be10_to_v210_sources,
106134
c_args : app_c_args,
107135
link_args: app_ld_args,
108-
dependencies: [libst_dpdk]
136+
dependencies: [libst_dpdk, libpthread]
137+
)
138+
139+
executable('PerfV210ToRfc4175422be10', perf_v210_to_rfc4175_422be10_sources,
140+
c_args : app_c_args,
141+
link_args: app_ld_args,
142+
dependencies: [libst_dpdk, libpthread]
109143
)
110144

111145
executable('TxVideoSample', video_tx_sample_sources,
112146
c_args : app_c_args,
113147
link_args: app_ld_args,
114-
dependencies: [libst_dpdk]
148+
dependencies: [libst_dpdk, libpthread]
115149
)
116150

117151
executable('TxRtpVideoSample', video_tx_rtp_sample_sources,
118152
c_args : app_c_args,
119153
link_args: app_ld_args,
120-
dependencies: [libst_dpdk]
154+
dependencies: [libst_dpdk, libpthread]
121155
)
122156

123157
executable('RxVideoSample', video_rx_sample_sources,
124158
c_args : app_c_args,
125159
link_args: app_ld_args,
126-
dependencies: [libst_dpdk]
160+
dependencies: [libst_dpdk, libpthread]
127161
)
128162

129163
executable('RxRtpVideoSample', video_rx_rtp_sample_sources,
130164
c_args : app_c_args,
131165
link_args: app_ld_args,
132-
dependencies: [libst_dpdk]
166+
dependencies: [libst_dpdk, libpthread]
133167
)
134168

135169
executable('TxSt22VideoSample', video_tx_st22_sample_sources,
136170
c_args : app_c_args,
137171
link_args: app_ld_args,
138-
dependencies: [libst_dpdk]
172+
dependencies: [libst_dpdk, libpthread]
139173
)
140174

141175
executable('RxSt22VideoSample', video_rx_st22_sample_sources,
142176
c_args : app_c_args,
143177
link_args: app_ld_args,
144-
dependencies: [libst_dpdk]
178+
dependencies: [libst_dpdk, libpthread]
179+
)
180+
181+
executable('TxSt22PipelineSample', pipeline_tx_st22_sample_sources,
182+
c_args : app_c_args,
183+
link_args: app_ld_args,
184+
dependencies: [libst_dpdk, libpthread]
185+
)
186+
187+
executable('RxSt22PipelineSample', pipeline_rx_st22_sample_sources,
188+
c_args : app_c_args,
189+
link_args: app_ld_args,
190+
dependencies: [libst_dpdk, libpthread]
145191
)
146192

147193
executable('RxSliceVideoSample', video_rx_slice_sample_sources,
148194
c_args : app_c_args,
149195
link_args: app_ld_args,
150-
dependencies: [libst_dpdk]
196+
dependencies: [libst_dpdk, libpthread]
151197
)
152198

153199
executable('TxSliceVideoSample', video_tx_slice_sample_sources,
154200
c_args : app_c_args,
155201
link_args: app_ld_args,
156-
dependencies: [libst_dpdk]
202+
dependencies: [libst_dpdk, libpthread]
203+
)
204+
205+
executable('RxSt20TxSt22Fwd', rx_st20_tx_st22_fwd_sources,
206+
c_args : app_c_args,
207+
link_args: app_ld_args,
208+
dependencies: [libst_dpdk, libpthread]
209+
)
210+
211+
executable('RxSt20TxSt20Fwd', rx_st20_tx_st20_fwd_sources,
212+
c_args : app_c_args,
213+
link_args: app_ld_args,
214+
dependencies: [libst_dpdk, libpthread]
157215
)
158216

159217
executable('DmaSample', dma_sample_sources,
@@ -166,4 +224,4 @@ executable('PerfDma', perf_dma_sources,
166224
c_args : app_c_args,
167225
link_args: app_ld_args,
168226
dependencies: [libst_dpdk]
169-
)
227+
)

app/perf/meson.build

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,11 @@
1111
# express or implied warranties, other than those that are expressly stated
1212
# in the License.
1313

14-
perf_rfc4175_to_yuv422p10le_sources = files('rfc4175_to_yuv422p10le.c')
14+
perf_rfc4175_422be10_to_p10le_sources = files('rfc4175_422be10_to_p10le.c')
15+
perf_p10le_to_rfc4175_422be10_sources = files('p10le_to_rfc4175_422be10.c')
1516
perf_rfc4175_422be10_to_le_sources = files('rfc4175_422be10_to_le.c')
17+
perf_rfc4175_422le10_to_be_sources = files('rfc4175_422le10_to_be.c')
1618
perf_rfc4175_422be10_to_le8_sources = files('rfc4175_422be10_to_le8.c')
1719
perf_rfc4175_422be10_to_v210_sources = files('rfc4175_422be10_to_v210.c')
18-
perf_dma_sources = files('perf_dma.c')
20+
perf_v210_to_rfc4175_422be10_sources = files('v210_to_rfc4175_422be10.c')
21+
perf_dma_sources = files('perf_dma.c')

0 commit comments

Comments
 (0)