BẰNG PHẦN MỀM JSVM 9.19.14
Cài đặt thử nghiệm và thực hiện mô phỏng một vài chức năng của SVC bằng phần mềm JSVM 9.19.14 [3] trên máy PC Intel core dual 1.8GHz, 1G RAM, Windows XP professional operating.
3.2.5.1 QUÁ TRÌNH GIẢM MẪU
Trong đó: BUS_352x288_30_orig_01_150 là chuỗi ảnh gốc với độ phân giải CIF tần số 30Hz qua JSVM giảm xuống chuỗi ảnh 4CIF 176x144 tần số 15Hz
Hình 3.17 Kết quả mô phỏng quá trình giảm mẫu
+ command:
DownConvertStatic 352 288 BUS_352x288_30_orig_01.yuv 176 144 BUS_176x144_15.yuv 0 1 0 frms
+ Cấu trúc tham số
DownConvertStatic <win> <hin> <in> <wout> <hout> <out> [<method> [<t> [<skip> [<frms>]]]]
[[-crop <args>] [-phase <args>] [-resample_mode <arg>]] win : input width (luma samples)
hin : input height (luma samples) in : input file
34
wout : output width (luma samples) hout : output height (luma samples) out : output file
--- OPTIONAL --- method : rescaling methods (default: 0)
0: normative upsampling
non-normative downsampling (JVT-R006)
1: dyadic upsampling (AVC 6-tap (1/2 pel) on odd luma samples dyadic downsampling (MPEG-4 downsampling filter)
2: crop only
3: upsampling (Three-lobed Lanczos-windowed sinc)
4: upsampling (JVT-O041: AVC 6-tap (1/2 pel) + bilinear 1/4 pel) t : number of temporal downsampling stages (default: 0)
skip : number of frames to skip at start (default: 0)
frms : number of frames wanted in output file (default: max) --- OVERLOADED --- -crop <type> <parameters>
type : 0: Sequence level, 1: Picture level
params : IF Sequence level: <x_orig> <y_orig> <crop_width> <crop_height> cropping window origin (x,y) and dimensions (width and height) IF Picture level: <crop_file>
input file containing cropping window parameters. each line has four integer numbers separated by a comma as following: "x_orig, y_orig, crop_width, crop_height" for each picture to be resampled;
-phase <in_uv_ph_x> <in_uv_ph_y> <out_uv_ph_x> <out_uv_ph_y>
in_uv_ph_x : input chroma phase shift in horizontal direction (default:-1) in_uv_ph_y : input chroma phase shift in vertical direction (default: 0) out_uv_ph_x: output chroma phase shift in horizontal direction (default:-1) out_uv_ph_y: output chroma phase shift in vertical direction (default: 0)
-resample_mode <resample_mode> (default: 0) 0: low-res-frm = progressive, high-res-frm = progressive 1: low-res-frm = interlaced, high-res-frm = interlaced
2: low-res-frm = progressive (top-coincided), high-res-frm = interlaced
3: low-res-frm = progressive (bot-coincided), high-res-frm = interlaced
4: low-res-frm = interlaced (top-first)
high-res-frm = progressive (double frm rate), 5: low-res-frm = interlaced (bot-first),
high-res-frm = progressive (double frm rate)
3.2.5.2 MÃ HOÁ ĐƠN LỚP (SINGLE LAYER CODING)
Mã hóa đơn lớp là dòng bít mã hóa không cung cấp nhiều độ phân giải hoặc nhiều tốc độ bit cho một độ phân giải không gian thời gian. Vì vậy không có lớp nâng cao không gian và chất lượng (CGS/MGS)
+ thực hiện mã hóa một chuỗi video BUS_176x144_15.yuv với độ phân giải QCIF tốc độ 15Hz.
35
Cấu hình file “encoder.cfg” cho mã hóa đơn lớp
# JSVM Main Configuration File
OutputFile test.264 # Bitstream file
FrameRate 30.0 # Maximum frame rate [Hz]
FramesToBeEncoded 150 # Number of frames (at input frame rate) GOPSize 16 # GOP Size (at maximum frame rate) BaseLayerMode 2 # Base layer mode (0,1: AVC compatible,
# 2: AVC w subseq SEI) SearchRange 32 # Search range (Full Pel)
NumLayers 1 # Number of layers
LayerCfg layer0.cfg # Layer configuration file
cấu hình file “layer0.cfg” cho mã hóa đơn lớp
# JSVM Layer Configuration File
InputFile BUS_176x144_15.yuv # Input file SourceWidth 176 # Input frame width SourceHeight 144 # Input frame height FrameRateIn 15 # Input frame rate [Hz] FrameRateOut 15 # Output frame rate [Hz]
Gọi chương trình mã hóa đơn lớp
>H264AVCEncoderLibTestStaticd.exe –pf encoder.cfg –lqp 0 30
kết quả quá trình mã hóa
Ở chế độ đơn lớp, luồng bít tạo ra vẫn hỗ trợ tính mở rộng về thời gian. Số mức mở rộng thời gian tùy thuộc vào kích thước GOP. Một nhóm ảnh bao gồm các bức ảnh khóa (key picture) và các bức ảnh B dự đoán phân cấp được đặt vào giữa key picture của GOP hiện tại và key picture của GOP trước. Hình 3.18 minh họa sự phân cấp đó.
prediction
key picture key picture
GOP border GOP border
Hình 3.18 Cấu trúc dự đoán phân cấp nhóm 8 ảnh [3] SUMMARY:
bitrate Min-bitr Y-PSNR U-PSNR V-PSNR --- --- --- --- --- 176x144 @ 1.8750 70.1460 70.1460 35.5847 40.5039 41.7123 176x144 @ 3.7500 94.5347 94.5347 34.3112 40.2488 41.4593 176x144 @ 7.5000 123.7500 123.7500 33.4101 40.0879 41.3131 176x144 @ 15.0000 160.3392 160.3392 32.7842 40.0369 41.2356 Encoding speed: 451.667 ms/frame, Time:67750.000 ms, Frames: 150
36
Trong đó các key picture được mã hóa intra (giúp cho việc truy cập ngẫu nhiên) hoặc được mã hóa inter bằng việc sử dụng các key picture trước như là các bức ảnh tham khảo và thực hiện dự đoán bù chuyển động. Chuỗi các key pictures độc lập với các bức ảnh khác trong chuỗi video, và chuỗi ảnh này tương ứng với độ phân giải thời gian thấp nhất được mã hóa. Hơn nữa các key picture này được xem như các điểm đồng bộ giữa bộ mã hóa và bộ giải mã khi lớp nâng cao MGS có thể tùy ý thêm vào. Bức ảnh đầu tiên của chuỗi video luôn luôn được mã hóa intra gọi là bức ảnh IDR và đại diện cho một GOP đặc biệt mà chỉ bao gồm 1 ảnh.
Các bức ảnh tiếp theo của GOP được phân cấp dự đoán. Trong ví dụ trên hình, bức ảnh ở giữa (màu xanh da trời) tham khảo các key picture xung quanh để dự đoán. Nó phụ thuộc vào các key picture, và cùng với các key picture đại diện cho mức phân giải thời gian tiếp theo. Mức thời gian tiếp theo là các bức tranh màu xanh lá cây, tham khảo vào các bức tranh ở các mức thấp hơn để dự đoán. Quá trình cứ tiếp tục như vậy, đây hiển nhiên là cấu trúc dự đoán vốn dĩ tạo ra sự mở rộng thời gian.
Trong ví dụ trên bộ mã hóa gọi file config, trong đó tham số “-lqp 0 30” quy định tham số lượng tử hóa cơ sở cũng như tham số Lagrangian cho dự đoán chuyển động và quyết định mode.
Kết quả quá trình mã hóa được chỉ ra như trong hình: gồm có độ phân giải không gian, tốc độ frame, tốc độ bit. Như vậy với một độ phân giải không gian: 176x144 đã cung cấp 4 luồng bit với tốc độ khác nhau bao tương ứng với tốc độ frame 1.87, 3.75, 7.5, và 15Hz. Vì vậy mà chúng ta sử dụng hiệu quả của nhóm 8 bức tranh.
Độ phân giải thời gian thấp nhất được xây dựng từ chuỗi các key picture
+ thực hiện một ví dụ mô phỏng quá trình tách dòng bít với tốc độ frame là 3.75Hz từ luồng bít đầu vào 30Hz ở trên và giải mã luồng bít đó.
Gọi chương trình
Sau đó sử dụng luồng bit thu được thực hiện quá trình giải mã, file ảnh đầu ra là file dec.yuv.
Phân tích đánh giá tỷ số tín hiệu đỉnh trên nhiễu giữa chuỗi video đầu vào và đầu ra.
>BitStreamExtractorStaticd.exe test.264 substream.264 –t 1 >H264AVCDecoderLibTestStatic substream.264 dec.yuv
>PSNRStatic 176 144 BUS_QCIF15.yuv dec.yuv 2 0 substream.264 15 2>PSNR.dat
>type PSNR.dat
37
3.2.5.3 MỞ RỘNG ĐƯỢC THEO KHÔNG GIAN
Mô phỏng việc mã hóa mở rộng không gian với 2 độ phân giải là QCIF và CIF.Tham số cấu hình như sau:
Cấu hình cho file encoder.cfg
# JSVM Main Configuration File
OutputFile test.264 # Bitstream file
FrameRate 30.0 # Maximum frame rate [Hz]
FramesToBeEncoded 150 # Number of frames (at input frame rate) GOPSize 16 # GOP Size (at maximum frame rate) BaseLayerMode 2 # Base layer mode (0,1: AVC compatible, # 2: AVC w subseq SEI) SearchMode 4 # Search mode (0:BlockSearch, 4:FastSearch) SearchRange 32 # Search range (Full Pel)
NumLayers 2 # Number of layers
LayerCfg layer0.cfg # Layer configuration file LayerCfg layer1.cfg # Layer configuration file
layer0.cfg
# JSVM Layer Configuration File
InputFile BUS_176x144_15.yuv # Input file SourceWidth 176 # Input frame width SourceHeight 144 # Input frame height FrameRateIn 15 # Input frame rate [Hz] FrameRateOut 15 # Output frame rate [Hz]
layer1.cfg
# JSVM Layer Configuration File
InputFile BUS_352x288_30_orig_01.yuv # Input file SourceWidth 352 # Input frame width SourceHeight 288 # Input frame height FrameRateIn 30 # Input frame rate [Hz] FrameRateOut 30 # Output frame rate [Hz]
InterLayerPred 2 # Inter-layer Pred. (0: no, 1: yes, 2:adap.)
AvcRewriteFlag 0 # Enable SVC to AVC rewrite (0: no, 1: yes)
Cấu trúc phân cấp mở rộng 2 lớp được mô tả như trong hình 3.19. Trong file cấu hình, kích thước của GOP được sử dụng cho QCIF và CIF là 8 và 16 (tương ứng trong hình là 4 và 8). Mũi tên chỉ ra dự đoán liên lớp. Dự đoán liên lớp chỉ có thể sử dụng trong cùng một đơn vị truy cập và vì vậy mà các bức ảnh lớp cơ sở và lớp nâng cao có cùng thời điểm. Tốc độ frame tại lớp nâng cao gấp 2 lần tại lớp cở sở. Các bức ảnh tại lớp nâng cao có mức thời gian cao nhất (trường hợp ở đây là các bức ảnh màu hồng) được mã hóa không có dự đoán liên lớp mà chỉ sử dụng dự đoán bù chuyển động.
38
GOP border GOP border
key pictures key pictures
QCIF CIF
inter-layer prediction
motion-compensated prediction
Hình 3.19 Cấu trúc mã hóa với 2 lớp không gian [3]
Thực hiện chương trình
Để thực hiện điều này: chuỗi ảnh CIF tần số 30Hz đầu vào phải được giảm mẫu tạo ra chuỗi video QCIF tần số 15Hz, “-lqp 0 30” và “-lqp 1 32” tương ứng với tham số lượng tử và tham số Langrangian của các lớp 0 và lớp 1.
Kết quả quá trình mã hóa
>DownConvertStatic 352 288 BUS_352x288_30_orig_01.yuv 176 144 BUS_176x144_15.yuv 0 1 >H264AVCEncoderLibTestStaticd.exe –pf encoder.cfg –lqp 0 30 –lqp 1 32
SUMMARY:
bitrate Min-bitr Y-PSNR U-PSNR V-PSNR --- --- --- --- --- 176x144 @ 1.8750 70.1460 70.1460 35.5847 40.5039 41.7123 176x144 @ 3.7500 94.5395 94.5395 34.2909 40.2645 41.4735 176x144 @ 7.5000 123.7595 123.7595 33.3940 40.0889 41.3220 176x144 @ 15.0000 160.4384 160.4384 32.7718 40.0391 41.2507 352x288 @ 1.8750 236.7900 236.7900 34.2643 40.1275 41.9229 352x288 @ 3.7500 326.1821 326.1821 32.6953 39.7507 41.6326 352x288 @ 7.5000 437.7900 437.7900 31.6651 39.5696 41.4725 352x288 @ 15.0000 582.6368 582.6368 30.9056 39.4899 41.3851 352x288 @ 30.0000 701.3904 701.3904 30.8905 39.4572 41.3830 Encoding speed: 3272.367 ms/frame, Time:490855.000 ms, Frames: 150 D:\Luong1\jsvm\bin>
39
Qua đó nhận thấy rằng quá trình mã hóa hỗ trợ độ phân giải không gian thời gian và tốc độ bit. Trong đó hỗ trợ tốc độ frame nhỏ nhất là 1.875Hz tương ứng với chuỗi các key picture.
Luồng bít tạo ra chứa 9 đại diện khác nhau, 4 trong số đó đại diện cho ảnh QCIF với tốc độ frame tương ứng là 1.875, 3.75, 7.5, và 15 Hz, 5 đại diện của ảnh CIF với tốc độ frame tương ứng là 1.875, 3.75, 7.5, 15, và 30 Hz. Tất cả các ảnh đều tương thích với bộ giải mã chuẩn AVC.
+ Từ luồng bít trên thực hiện tách một đại diện QCIF với tốc độ frame là 7.5Hz và một đại diện của CIF với tốc độ frame là 15Hz. Chú ý rằng, trong đại diện tách ra vẫn bao gồm tất cả các đại diện với độ phân giải không gian và tốc độ frame bằng hoặc nhỏ hơn, vì vậy nó có thể sử dụng cho những phân tách tiếp theo.
Dòng lệnh trên sử dụng tách từ luồng bít ra thành 2 luồng bit subP0.264 và subP1.264, sau đó thực hiện giải mã và đánh giá tỷ số tín hiện 2 tín hiệu đầu ra.
>BitStreamExtractorStaticd.exe test.264 subP0.264 –l 0 –t 2 >BitStreamExtractorStaticd.exe test.264 subP1.264 –l 1 –t 3 >H264AVCDecoderLibTestStatic subP0.264 decP0.yuv
>H264AVCDecoderLibTestStatic subP1.264 decP1.yuv
>PSNRStatic 176 144 BUS_QCIF15.yuv decP0.yuv 1 0 subP0.264 15 2> PSNR.dat
>PSNRStatic 352 288 BUS_CIF30.yuv decP1.yuv 1 0 subP1.264 30 2>>PSNR.dat >type PSNR.dat 123,4611 34,7798 40,9418 42,2639 647,7872 34,1147 40,9572 42,9462 Contained Layers: ====================
Layer Resolution Framerate Bitrate MinBitrate DTQ 0 176x144 1.8750 70.10 70.10 (0,0,0) 1 176x144 3.7500 94.50 94.50 (0,1,0) 2 176x144 7.5000 123.80 123.80 (0,2,0) 3 176x144 15.0000 160.40 160.40 (0,3,0) 4 352x288 1.8750 236.80 236.80 (1,0,0) 5 352x288 3.7500 326.20 326.20 (1,1,0) 6 352x288 7.5000 437.80 437.80 (1,2,0) 7 352x288 15.0000 582.60 582.60 (1,3,0) 8 352x288 30.0000 701.40 701.40 (1,4,0) Total Packet Size: 78858
Number of input packets : 380 Number of output packets: 117
40
Kết quả quá trình tách luồng bit QCIF với tốc độ frame là 7.5Hz
Kết quả quá trình tách luồng bit CIF với tốc độ frame là 15Hz
Từ các kết quả trên nhận thấy rằng để truyền ảnh với độ phân giải tăng lên gấp 4, tần số tăng gấp đôi thì tốc độ bit yêu cầu tăng lên 5 lần với cùng một tỷ số tín hiệu đỉnh trên nhiễu.
3.2.5.4 MỞ RỘNG ĐƯỢC VỀ CHẤT LƯỢNG
Trong SVC, hỗ trợ 2 khả năng mở rộng về tỷ số tín hiệu trên nhiễu bao gồm: khả năng mở rộng hạt thô (coarse-grain scalability: CGS) và mở rộng hạt trung bình (medium- grain scalability: MGS). Về nguyên tắc CGS và MGS có cùng mã hóa mở rộng không gian vì vậy chỉ một độ phân giải không gian được sử dụng và khai thác các tốc độ khác nhau lấy ra từ luồng bit của bộ mã hóa.
Cấu hình các file cho mã hóa mở rộng chất lượng
Cấu hình file encoder.cfg
Cấu hình file “layer0.cfg”
# JSVM Layer Configuration File
Contained Layers:
====================
Layer Resolution Framerate Bitrate MinBitrate DTQ 0 176x144 1.8750 70.10 70.10 (0,0,0) 1 176x144 3.7500 94.50 94.50 (0,1,0) 2 176x144 7.5000 123.80 123.80 (0,2,0) 3 176x144 15.0000 160.40 160.40 (0,3,0) 4 352x288 1.8750 236.80 236.80 (1,0,0) 5 352x288 3.7500 326.20 326.20 (1,1,0) 6 352x288 7.5000 437.80 437.80 (1,2,0) 7 352x288 15.0000 582.60 582.60 (1,3,0) 8 352x288 30.0000 701.40 701.40 (1,4,0) Total Packet Size: 365060
Number of input packets : 380 Number of output packets: 305
# JSVM Main Configuration File
OutputFile test.264 # Bitstream file
FrameRate 30.0 # Maximum frame rate [Hz]
FramesToBeEncoded 150 # Number of frames (at input frame rate) GOPSize 16 # GOP Size (at maximum frame rate) BaseLayerMode 2 # Base layer mode (0,1: AVC compatible, # 2: AVC w subseq SEI) CgsSnrRefinement 1 # SNR refinement as 1: MGS; 0: CGS
EncodeKeyPictures 1 # Key pics at T=0 (0:none, 1:MGS, 2:all) MGSControl 2 # ME/MC for non-key pictures in MGS layers # (0:std, 1:ME with EL, 2:ME+MC with EL) SearchMode 4 # Search mode (0:BlockSearch, 4:FastSearch) SearchRange 32 # Search range (Full Pel)
NumLayers 2 # Number of layers
LayerCfg layer0.cfg # Layer configuration file
41
InputFile org_352x288_30.yuv # Input file SourceWidth 352 # Input frame width SourceHeight 288 # Input frame height FrameRateIn 30 # Input frame rate [Hz] FrameRateOut 30 # Output frame rate [Hz] MGSVectorMode 0 # MGS vector usage selection
Cấu hình file “layer1.cfg”
# JSVM Layer Configuration File
InputFile org_352x288_30.yuv # Input file SourceWidth 352 # Input frame width SourceHeight 288 # Input frame height FrameRateIn 30 # Input frame rate [Hz] FrameRateOut 30 # Output frame rate [Hz]
InterLayerPred 1 # Inter-layer Prediction (0: no, 1: yes, 2:adaptive)
MGSVectorMode 1 # MGS vector usage selection
MGSVector0 4 # Specifies 0th position of the vector
MGSVector1 4 # Specifies 1st position of the vector MGSVector2 8 # Specifies 2nd position of the vector
Thực hiện lệnh
Sự khác nhau về mặt tối ưu phụ thuộc số lớp MGS được mã hóa. Đối với mã hóa mở rộng SNR với 1 lớp MGS, sự khác nhau QP của 1 hoặc 2 đáng kể trong hầu hết các trường hợp.
Kết quả quá trình mã hóa
Hỗ trợ đa lớp mở rộng trong mã hóa mở rộng SNR
H264AVCEncoderLibTestStaticd.exe –pf encoder.cfg -lqp 0 30 -rqp 0 32 -lqp 1 24 -rqp 1 26
SUMMARY:
bitrate Min-bitr Y-PSNR U-PSNR V-PSNR --- --- --- --- --- 352x288 @ 1.8750 382.5960 251.0685 39.0068 42.9363 44.6306 352x288 @ 3.7500 544.4858 345.2684 37.3465 42.3022 44.1450 352x288 @ 7.5000 748.6011 452.7774 36.2126 41.9859 43.9103 352x288 @ 15.0000 1017.9760 586.4576 35.3859 41.7531 43.7311 352x288 @ 30.0000 1359.2880 746.2560 34.7643 41.6100 43.6504 Encoding speed: 4336.713 ms/frame, Time:650507.000 ms, Frames: 150
42
Trong ví dụ trên mô tả các luồng bit đầu ra của bộ mã hóa, các tốc độ bít khác nhau tương ứng với các lớp MGS được quy định trong MGS véc tơ trong layer1.cfg. Bên cạnh đó có thể tách các tốc độ bit khác từ một lớp MGS mà bao gồm nhiều gói (mỗi gói cho một slice). Như ta thấy: với tốc độ frame là 30Hz, tương ứng với rất nhiều tốc độ bit trong
>BitStreamExtractorStatic test.264
Contained Layers:
====================
Layer Resolution Framerate Bitrate DTQ 0 352x288 1.8750 215.10 (0,0,0) 1 352x288 3.7500 293.50 (0,1,0) 2 352x288 7.5000 385.10 (0,2,0) 3 352x288 15.0000 496.30 (0,3,0) 4 352x288 30.0000 633.00 (0,4,0) 5 352x288 1.8750 278.60 (0,0,1) 6 352x288 1.8750 328.30 (0,0,2) 7 352x288 1.8750 379.60 (0,0,3) 8 352x288 3.7500 394.30 (0,1,1) 9 352x288 3.7500 467.30 (0,1,2) 10 352x288 3.7500 540.30 (0,1,3) 11 352x288 7.5000 540.10 (0,2,1) 12 352x288 7.5000 644.80 (0,2,2) 13 352x288 7.5000 745.80 (0,2,3) 14 352x288 15.0000 730.00 (0,3,1) 15 352x288 15.0000 878.50 (0,3,2) 16 352x288 15.0000 1015.70 (0,3,3) 17 352x288 30.0000 972.00 (0,4,1) 18 352x288 30.0000 1179.70 (0,4,2) 19 352x288 30.0000 1360.40 (0,4,3)