- Nov 08, 2017
-
-
Frames are encoded as different layers. Frame in a particular layer will use pictures in lower or same layer as references. Which means decoder can drop the frames in upper layer but still decode lower layer frames. B-frames, except the one in top most layer, are reference frames. All the base layer frames are I or P. eg: with 3 temporal layers T3: B1 B3 B5 B7 T2: B2 B6 T1: I0 P4 P8 T1, T2, T3: Temporal Layers P1...Pn: P-Frames: B1...Bn: B-frames: T1: I0->P4 , P4->P8 etc.. T2: I0--> B2 <-- P4 T3: I0--> B1 <-- B2, B2 --> B3 <-- P4 Signed-off-by:
Sreerenj Balachandran <sreerenj.balachandran@intel.com> https://bugzilla.gnome.org/show_bug.cgi?id=788918
-
Frames are encoded as different layers. A frame in a particular layer will use pictures in lower or same layer as references. Which means decoder can drop the frames in upper layer but still decode lower layer frames. eg: with 3 temporal layers T3: P1 P3 P5 P7 T2: P2 P6 T1: P0 P4 P8 T1, T2, T3: Temporal Layers P1...pn: P-Frames: P0->P1 , P0->P2, P2->P3, P0->P4......repeat Signed-off-by:
Sreerenj Balachandran <sreerenj.balachandran@intel.com> https://bugzilla.gnome.org/show_bug.cgi?id=788918
-
The frame_num generation was not correctly implemented. According to h264 spec, frame_num should get incremented for each frame if previous frame is a referece frame. For eg: IPBPB sequece should have the frame numbers 0,1,2,2,3 Signed-off-by:
Sreerenj Balachandran <sreerenj.balachandran@intel.com> https://bugzilla.gnome.org/show_bug.cgi?id=788918
-
Adds new property "prediction-type" to select different reference picture selection modes like hierarchical-p, hierarchical-b etc. Signed-off-by:
Sreerenj Balachandran <sreerenj.balachandran@intel.com> https://bugzilla.gnome.org/show_bug.cgi?id=788918
-
Adds some basic building blocks to ease the implementation of hierarchical prediction modes. -- add an utility method to find temporal level of each frame -- define max_ref_frame count based on temporal level count -- add temporal_level_div[] for finding temporal level each frame to be encoded. -- find ip_period based on temporal level count Signed-off-by:
Sreerenj Balachandran <sreerenj.balachandran@intel.com> https://bugzilla.gnome.org/show_bug.cgi?id=788918
-
Adds new property "temporal-levels" to select the number of temporal levels to be included in the encoded stream. Signed-off-by:
Sreerenj Balachandran <sreerenj.balachandran@intel.com> https://bugzilla.gnome.org/show_bug.cgi?id=788918
-
We can have p-frame as non-ref and also b-frame as ref which are not supported yet. Reference flag is the first machinery needed for more advanced reference picture selection modes. Signed-off-by:
Sreerenj Balachandran <sreerenj.balachandran@intel.com> https://bugzilla.gnome.org/show_bug.cgi?id=788918
-
- Sep 01, 2017
-
-
A new FEI based encoder element for h264 is added: vaapih264feienc FEI is a an extension to VA-API which is providing low level advanced control over different stages of encoding. Extending vaapih264enc with fei support is possible, but it will make the code too much complicated and will be difficult to debug. So adding the new encoder element, but keeping the rank as 0 , vaapih264enc will stay as the primary encoder for normal use cases. The vaaih264feienc is mainly useful for customers who want to play with MotionVectors and Macroblock Predictions. Also user can do one stage of encoding(eg: only the Motion Vector Calculation) in software and offload trasformation/entroy-coding etc to Hardware (which is what PAK module is doing) using FEI element. vaapih264feienc can work in different modes using fei-mode properoty eg: gst-launch-1.0 videotestsrc ! vaapih264feienc fei-mode=ENC+PAK ! filesink location=sample.264 Important Note: ENC only mode won't produce any encoded data which is expected. But ENC alwys requires the output of PAK in order to do the inter-prediction over reconstructed frames. Similary PAK mode alway requires MV and MBCode as input, so unless there is an upstream element providing those buffers, PAK only won't work as expected. In a nutshell, ENC_PAK and the ENC+PAK modes are the only options we can verify with vaapih264feienc. But ideally, EN+PAK mode verification is enough to make sure that ENC and PAK are working as expected since ENC+PAK mode always invoke ENC and PAK separately in vaapih264feienc. People contributed: Wang, Yi <yi.a.wang@intel.com> Leilei <leilei.shang@intel.com> Zhong, Xiaoxia <xiaoxia.zhong@intel.com> xiaominc <xiaomin.chen@intel.com> Li, Jing B <jing.b.li@intel.com> https://bugzilla.gnome.org/show_bug.cgi?id=785712 https://bugzilla.gnome.org/show_bug.cgi?id=784667 Signed-off-by:
Sreerenj Balachandran <sreerenj.balachandran@intel.com>
-
Two new virtual methods are added to gstvaapiencode. load_control_data(): load the FEI input buffers set by the upstream elements save_stats_to_meta(): save the FEI output buffers to Meta for downnstream elements https://bugzilla.gnome.org/show_bug.cgi?id=785712 https://bugzilla.gnome.org/show_bug.cgi?id=784667 Signed-off-by:
Sreerenj Balachandran <sreerenj.balachandran@intel.com>
-
GstVaapiFeiVideoMeta holds the below fei codec objects: GstVaapiEncFeiMbCode GstVaapiEncFeiMv GstVaapiEncFeiMvPredictor GstVaapiEncFeiMbControl GstVaapiEncFeiQp GstVaapiEncFeiDistortion https://bugzilla.gnome.org/show_bug.cgi?id=785712 https://bugzilla.gnome.org/show_bug.cgi?id=784667 Signed-off-by:
Sreerenj Balachandran <sreerenj.balachandran@intel.com>
-
Added enum/flag type definitions for a number of FEI input and output parameters. Original author of the patch: Wang, Yi <yi.a.wang@intel.com> https://bugzilla.gnome.org/show_bug.cgi?id=785712 https://bugzilla.gnome.org/show_bug.cgi?id=784667 Signed-off-by:
Wang, Yi <yi.a.wang@intel.com> Signed-off-by:
Sreerenj Balachandran <sreerenj.balachandran@intel.com>
-
Add a new vitrual method ensure_secondary_context to the base encoder which is only required for the FEI entrypoint, that too only when user configures the ENC+PAK mode. ENC+PAK mode is not something supported directly by libva or driver, but this can be enabled from the middleware. Original Author of this idea: Leilei Shang <leilei.shang@intel.com> Signed-off-by:
Leilei Shang <leilei.shang@intel.com> Signed-off-by:
xiaominc <xiaomin.chen@intel.com> Signed-off-by:
Sreerenj Balachandran <sreerenj.balachandran@intel.com> https://bugzilla.gnome.org/show_bug.cgi?id=785712 https://bugzilla.gnome.org/show_bug.cgi?id=784667
-
- Aug 29, 2017
-
-
When vaapih264dec's base-only profile is set to TRUE, fake SVC profile support in caps. https://bugzilla.gnome.org/show_bug.cgi?id=732266 Signed-off-by:
Sreerenj Balachandran <sreerenj.balachandran@intel.com>
-
Drops non-base NALs when the base-only property is set to TRUE. This modifies the behavior for MVC streams with base-only too: All the non-base units are dropped before they are decoded instead of dropping the non-base frames. The relevant part from the H264 spec is: > Decoders that conform to one or more of the profiles specified in Annex A rather than the profiles specified in Annexes G or H shall ignore (remove from the bitstream and discard) the contents of all NAL units with nal_unit_type equal to 14, 15, or 20. To eliminate side effects from the offending units: - PPS's with a broken seq_parameter_set_id (referring to dropped subset SPS's) are ignored. - The NAL parsing is skipped and their flags are set to GST_VAAPI_DECODER_UNIT_FLAG_SKIP. - Prefix units are not stored in prev_pi. Otherwise, parse_slice() would use them even if they are flagged to be skipped. Subset SPS's and slice extension units are not stored there either. https://bugzilla.gnome.org/show_bug.cgi?id=732266 Signed-off-by:
Sreerenj Balachandran <sreerenj.balachandran@intel.com>
-
- Sep 11, 2015
-
-
Sreerenj Balachandran authored
dae1a84: h264parse/h265parse: Fix negotiation crash 45a9f8a: codecparsers: h265 : Fix default scaling list values 28eaaf5: codecparsers: h265: Fix the selection of Active Ref Pic Set Signed-off-by:
Sreerenj Balachandran <sreerenj.balachandran@intel.com>
-
- Aug 13, 2015
-
-
Sreerenj Balachandran authored
This is necessary for finding ChromaOffsetL0/ChromaOffsetL1 prediction weight table values with out using any hard coding. Fixme: We don't have parser API for sps_range_extension, so assumed zero value for high_precision_offsets_enabled_flag. Signed-off-by:
Sreerenj Balachandran <sreerenj.balachandran@intel.com>
-
Sreerenj Balachandran authored
Based on ITU-T rec H265(4/2015): 7-56 This was a wrong equation in rec H265 (4/2013): 7-44... Signed-off-by:
Sreerenj Balachandran <sreerenj.balachandran@intel.com>
-
Sreerenj Balachandran authored
Assign only if ChromaArrayType != 0.. Signed-off-by:
Sreerenj Balachandran <sreerenj.balachandran@intel.com>
-
Sreerenj Balachandran authored
8e98b41: codecparsers: h265: Fix the range of delta_chroma_log2_weight_denom 839c5bc: codecparsers: h265: Fix the parsing of ref_pic_lists_modification Signed-off-by:
Sreerenj Balachandran <sreerenj.balachandran@intel.com>
-
- Aug 11, 2015
-
-
Sreerenj Balachandran authored
8a03e67: videoparsers: h265: Avoid skipping of EOS and EOB nals a033083: videoparsers: h265: Fix the frame start detection code Signed-off-by:
Sreerenj Balachandran <sreerenj.balachandran@intel.com>
-
- Aug 10, 2015
-
-
Sreerenj Balachandran authored
Signed-off-by:
Sreerenj Balachandran <sreerenj.balachandran@intel.com>
-
- Aug 07, 2015
-
-
Sreerenj Balachandran authored
HACK: This is a work-around to identify some main profile streams having wrong profile_idc. There are some wrongly encoded main profile streams(eg: ENTP_C_LG_3.bin) which doesn't have any of the profile_idc values mentioned in Annex-A, instead general_profile_idc has been set as zero and having general_profile_compatibility_flag[general_profile_idc] is TRUE. Assuming them as MAIN profile for now. https://bugzilla.gnome.org/show_bug.cgi?id=753226 Signed-off-by:
Sreerenj Balachandran <sreerenj.balachandran@intel.com>
-
Sreerenj Balachandran authored
ee7e81b: h264parse: Don't discard first AU delimiter 3690fb9: h264parse: Add more NAL types for debugging output 108d368: h265parse: Avoid checking for Non Mandatory VPS NAL ace61048: h265parse: expose compatible profiles to downstream Signed-off-by:
Sreerenj Balachandran <sreerenj.balachandran@intel.com>
-
- Aug 06, 2015
-
-
Sreerenj Balachandran authored
We are calculating the dpb size based on max_dec_pic_buffering. But if there are more than one temporal sublayers, we are supposed to use the max_dec_pic_buffering[max_sub_layers_minus] for dpb size calculation (Assuming HighestTid as max_sub_layers_minus). Sample streams: TSCL_A_VIDYO_5.bin, TSCL_B_VIDYO_4.bin https://bugzilla.gnome.org/show_bug.cgi?id=753226 Signed-off-by:
Sreerenj Balachandran <sreerenj.balachandran@intel.com>
-
- Aug 05, 2015
-
-
Sreerenj Balachandran authored
Decoding process for reference picture list construction needs to be invoked only for P and B slice and the value for slice_type of dependent slice segment should be taken from the previous independent slice segment header of the same pic. https://bugzilla.gnome.org/show_bug.cgi?id=753226 Signed-off-by:
Sreerenj Balachandran <sreerenj.balachandran@intel.com>
-
- Jul 22, 2015
-
-
Sreerenj Balachandran authored
All API/ABI changes for S3D/MVC are added in 1.5, backporting them to older verison is not recommended. Signed-off-by:
Sreerenj Balachandran <sreerenj.balachandran@intel.com>
-
Sreerenj Balachandran authored
Signed-off-by:
Sreerenj Balachandran <sreerenj.balachandran@intel.com>
-
Sreerenj Balachandran authored
ed13220: mpegvideometa: add meta transform function 18d5efd: codecparsers: jpeg: add some padding to ScanHdr struct 7a51722: codecparsers: jpeg: fix docs for table parsing functions 06b8ded: codecparsers: jpeg: fix validity checking of data parsed 387a39d: codecparsers: jpeg: fix up API db9d6a9: codecparsers: jpeg: tweak API a little bb6951e: codecparsers: jpeg: hide gst_jpeg_scan_for_marker_code() f33c30c: codecparsers: jpeg: fix and optimize scan for next marker code 4658c30: codecparsers: jpeg: fix calculation of segment size 759bcb9: codecparsers: jpeg: fix default Huffman tables generation b4811ee: codecparsers: jpeg: add JPEG bitstream parser 9422464: h264parse: fix typo in log message 9e793a0: h264parse: Move PAR calcs, and use them for stereoscopic half-aspect 77704ce: nalutils: trivial patch to check if 8bb9249: codecparsers: mpeg4: actually return full number of bits of resync marker 7862f95: Revert "codecparsers: remove ignored increment of return" 54017b1: h264parse: Add support for passing stereoscopic/multiview info 8667ee4: h264parse: Don't switch to passthrough on set_caps() Signed-off-by:
Sreerenj Balachandran <sreerenj.balachandran@intel.com>
-
- Jul 07, 2015
-
-
Sreerenj Balachandran authored
Unfortunately vaapidecodebin element is not seems to be stable enough for autoplugging ahead of vaapidecode. Lowering the rank for now (cosidering the immediate 0.6 release). See this: https://bugzilla.gnome.org/show_bug.cgi?id=749554 Signed-off-by:
Sreerenj Balachandran <sreerenj.balachandran@intel.com>
-
- Jul 03, 2015
-
-
Sreerenj Balachandran authored
Fix the regression introduced in commit eb465fb3. VAProcFilterSkinToneEnhancement is avaialbe from VA >= 0.36. Signed-off-by:
Sreerenj Balachandran <sreerenj.balachandran@intel.com>
-
Sreerenj Balachandran authored
VAProcFilterSkinToneEnhancement is avaialbe from VA >= 0.36. Signed-off-by:
Sreerenj Balachandran <sreerenj.balachandran@intel.com>
-
- Jul 02, 2015
-
-
Sreerenj Balachandran authored
Use VA_ENC_PACKED_HEADER_* definition for checking. Signed-off-by:
Sreerenj Balachandran <sreerenj.balachandran@intel.com>
-
Sreerenj Balachandran authored
Use VA_ENC_PACKED_HEADER_* definition for checking. Signed-off-by:
Sreerenj Balachandran <sreerenj.balachandran@intel.com>
-
Sreerenj Balachandran authored
One buffering_period() SEI message shall be present in every IDR access unit when NalHrdBpPresentFlag is inferred to be equal to 1. This is the case when we use a non-CQP mode, e.g. CBR. In other words, when nal_hrd_parameters_present_flag is set to 1. One picture_timing() SEI messages shall be present in every access unit if CpbDpbDelaysPresentFlag is equal to 1 or pic_struct_present_flag is equal to 1 https://bugzilla.gnome.org/show_bug.cgi?id=722734 https://bugzilla.gnome.org/show_bug.cgi?id=751831 Signed-off-by:
Sreerenj Balachandran <sreerenj.balachandran@intel.com>
-
- Jun 29, 2015
-
-
Sreerenj Balachandran authored
The Current code path is falling back to passthorugh mode if there is no vpp property set by the user explictily. But we should not use the passthrough mode if the negotiated src pad caps have a differnt color space format than sink pad caps (Even though the user didn't set the format property explicitly). https://bugzilla.gnome.org/show_bug.cgi?id=748184 Signed-off-by:
Sreerenj Balachandran <sreerenj.balachandran@intel.com>
-
Sreerenj Balachandran authored
This is a workaround to deal with the va-intel-driver for non-native formats while doing advanced deinterlacing. The format of reference surfaces must be same as the format used by the driver internally for motion adaptive deinterlacing and motion compensated deinterlacing. A permanent solution could be to do the color space conversion internally for reference surfaces. https://bugzilla.gnome.org/show_bug.cgi?id=730925 Signed-off-by:
Sreerenj Balachandran <sreerenj.balachandran@intel.com>
-
vaapisink takes the display lock, then does a gst_buffer_replace which can take the lock on the gst_vaapi_video_pool. vaapipostproc asks the gst_vaapi_video_pool for a new surface. This takes the lock on the gst_vaapi_video_pool; if you're unlucky, there are no free surfaces, which means that gst_vaapi_surface_create is called. gst_vaapi_surface_create takes the display lock. If vaapisink and vaapipostproc are in different threads, and this happens, you get a deadlock. vaapisink holds the display lock, and wants the gst_vaapi_video_pool lock. vaapipostproc holds the gst_vaapi_video_pool lock and wants the display lock. Work around this by releasing the display lock in vaapisink around the gst_buffer_replace. https://bugzilla.gnome.org/show_bug.cgi?id=738249 Signed-off-by:
Simon Farnsworth <simon.farnsworth@onelan.co.uk> Signed-off-by:
Sreerenj Balachandran <sreerenj.balachandran@intel.com>
-
- Jun 17, 2015
-
-
https://bugzilla.gnome.org/show_bug.cgi?id=750095 Signed-off-by:
Sreerenj Balachandran <sreerenj.balachandran@intel.com> Signed-off-by:
Gwenole Beauchesne <gwenole.beauchesne@intel.com>
-
- Jun 02, 2015
-
-
Sreerenj Balachandran authored
This is a work-around to satisfy the va-intel-driver. Normalize the quality factor and scale QM values (only for packed header generation) similar to what VA-Intel driver is doing . Otherwise the generated packed headers will be wrong, since the driver itself is scaling the QM values using the normalized quality factor. https://bugzilla.gnome.org/show_bug.cgi?id=748335 Signed-off-by:
Sreerenj Balachandran <sreerenj.balachandran@intel.com>
-