ChangeLog 1.42 MB
Newer Older
Tim-Philipp Müller's avatar
Tim-Philipp Müller committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
=== release 1.17.90 ===

2020-08-20 16:16:25 +0100  Tim-Philipp Müller <tim@centricular.com>

	* ChangeLog:
	* NEWS:
	* RELEASE:
	* gstreamer-vaapi.doap:
	* meson.build:
	  Release 1.17.90

2020-08-17 11:43:53 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* gst-libs/gst/vaapi/gstvaapisurface_egl.c:
	  libs: surface: egl: guard memory type
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/384>

2020-08-17 19:26:43 +0800  He Junyan <junyan.he@intel.com>

	* gst/vaapi/gstvaapidecode.c:
	  plugin: decode: Fix two mem leaks because of caps.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/385>

2020-08-16 01:57:15 +0800  He Junyan <junyan.he@intel.com>

	* gst/vaapi/gstvaapivideomemory.c:
	  plugin: allocator: No need to ref allocator when create mem.
	  We do not need to ref the allocator when creating GstVaapiVideoMemory
	  kind memory, and then release it in _free(). The framework already
	  does it for us.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/383>

2020-08-14 10:42:51 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* gst/vaapi/gstvaapiencode_h264.c:
	  vaapiencode: h264: ignore level without breaking negotiation
	  Since commit 9f627ef2 if the user sets level in the encoder src caps
	  the caps negotiation is rejected.
	  But since the same commit the same encoder set the autoconfigured
	  level in caps. Some change in the base class might fixed the operation
	  order so now the caps are set and later negotiated.
	  This patch removes the level check.
	  Fixes: #273
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/382>

2019-07-09 19:17:48 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* gst-libs/gst/vaapi/egl_vtable.h:
	* gst-libs/gst/vaapi/gstvaapisurface_egl.c:
	* gst-libs/gst/vaapi/gstvaapisurface_egl.h:
	* gst-libs/gst/vaapi/gstvaapitexture_egl.c:
	  libs: egl: surface: export EGLImage as DMABuf if GEM not supported
	  This code path is used when frames are rendered as textures through
	  GstVideoGLTextureUploadMeta with EGL, mainly under Wayland.
	  Originally the EGLImage was exported as GEM, which was handled by
	  Intel drivers, but Gallium ones cannot create VA surfaces from
	  GEM buffers, only DMABuf.
	  This patch checks the memory types supported by VA driver to choose
	  the render the EGLImages from GEM or DMABuf, because GEM is still
	  better where supported.
	  DMABuf is well handled either by intel-vaapi-driver and gallium.
	  Fixes: #137
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/122>

2020-05-26 16:18:32 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* gst-libs/gst/vaapi/gstvaapifilter.c:
	* gst-libs/gst/vaapi/gstvaapifilter.h:
	  libs: filter: gst_vaapi_filter_get_memory_types()
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/122>

2020-08-12 18:48:59 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* gst/vaapi/gstvaapipluginbase.c:
	* gst/vaapi/gstvaapipluginbase.h:
	  plugins: remove gst_vaapi_plugin_base_get_allowed_srcpad_raw_caps()
	  Since nobody uses it, just remove it.
	  Thus extract_allowed_surface_formats() is refactored to attend only
	  gst_vaapi_plugin_base_get_allowed_sinkpad_raw_caps().
	  Now a surface is created when the image chorma is different from the
	  previous one. And if the driver has the quirk, it outputs all the
	  supported image formats without trying them.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/381>

2020-08-12 17:50:50 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* gst/vaapi/gstvaapidecode.c:
	  vaapidecode: expose raw src caps with same chroma
	  The try-and-error approach for getting the possible image formats from
	  a surface has brought several problems in different drivers, from
	  crashes to drop in performance.
	  Instead of that we change the algorithm to determine the possible
	  image formats based in the surface chroma: only those available image
	  formats with same chroma are exposed as possible raw caps.
	  Do this is important to avoid performance degrading in raw sinks
	  which doesn't handle NV12 but it does YV12 or I420.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/381>

2020-07-10 17:05:38 +0800  He Junyan <junyan.he@intel.com>

	* gst-libs/gst/vaapi/gstvaapiutils_h265.c:
	  libs: util: h265: use common parser API to get vaapi profiles.
	  We can reuse H265 parser's API to recognize the correct profile and
	  then just need to convert them to VAAPI profiles.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/356>

2020-08-07 16:41:49 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* gst-libs/gst/vaapi/meson.build:
	* gst/vaapi/meson.build:
	* meson.build:
	  build: update for gl pkg-config file split
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/378>

2020-08-06 12:51:27 +0800  Xu Guangxin <guangxin.xu@intel.com>

	* gst-libs/gst/vaapi/gstvaapidecoder_h264.c:
	  h264dec: mark remaining frames as unreference before exec_picture_refs_modification
	  8.2.4.2 required this. Some clips will crash if we do not fill the reference list like this.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/376>

2020-07-31 18:22:46 +0800  He Junyan <junyan.he@intel.com>

	* gst-libs/gst/vaapi/gstvaapiencoder.c:
	* gst-libs/gst/vaapi/gstvaapiencoder_h265.c:
	* gst-libs/gst/vaapi/gstvaapiutils_h265.c:
	  libs: encoder: H265: Enable Main 12 profile support.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/375>

2020-07-31 19:17:39 +0800  He Junyan <junyan.he@intel.com>

	* gst-libs/gst/vaapi/video-format.c:
	  video format: Fix P012_LE's chrome type typo.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/375>

2020-08-04 21:15:01 +0300  Jordan Petridis <jordan@centricular.com>

	* gst-libs/gst/vaapi/gstvaapiminiobject.c:
	  gstvaapiminiobject.c:   fix clang 10 warnings
	  the typesystem checks in g_atomic_pointer_compare_and_exchange
	  seem to trigger some false positives with clang 10
	  similar to gstreamer!584
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/377>

2020-07-31 11:07:23 +0200  Michael Olbrich <m.olbrich@pengutronix.de>

	* gst-libs/gst/vaapi/gstvaapiwindow_wayland.c:
	  libs: window: wayland: destroy all wayland buffers during finalize
	  Some buffers and the associated FrameState state may still be pending at
	  that point. If the wayland connection is shared, then messages for the
	  buffer may still arrive. However, the associated event queue is already
	  deleted. So the result is a crash.
	  With a private connection the associated memory is leaked instead.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/342>

2020-06-18 20:25:18 +0200  Michael Olbrich <m.olbrich@pengutronix.de>

	* tests/examples/test-vaapicontext.c:
	  test: vaapicontext: fix draw callback with multiple videos
	  The callback is called for both windows. So make sure that
	  gst_video_overlay_set_render_rectangle() is called for the correct one.
	  Otherwise, the left video will be randomly moved behind the right video.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/342>

2020-06-19 09:23:52 +0200  Michael Olbrich <m.olbrich@pengutronix.de>

	* tests/examples/meson.build:
	* tests/examples/test-vaapicontext.c:
	  test: vaapicontext: support wayland display
	  On Wayland, The whole gtk window is one Wayland surface. So
	  gtk_widget_get_window() must be called on the top-level widget.
	  For any other widget the following gdk_window_ensure_native() may create a
	  new top-level Wayland surface that is never visible.
	  As a result, the coordinates passed to
	  gst_video_overlay_set_render_rectangle() must be relativ to the top-level
	  window. Otherwise the video is placed incorrectly.
	  Original-Patch-By: Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/342>

2017-12-01 20:18:28 +0100  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* tests/examples/test-vaapicontext.c:
	  test: vaapicontext: use playbin to test files
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/342>

2017-11-29 11:11:39 +0100  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* tests/examples/test-vaapicontext.c:
	  test: vaapicontext: add PLAY and NULL buttons
	  They only appear when only one sink is instanciated and their purpose
	  is to test the NULL-PLAY use case in context sharing.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/342>

2020-06-19 21:26:52 +0200  Michael Olbrich <m.olbrich@pengutronix.de>

	* gst-libs/gst/vaapi/gstvaapiwindow_wayland.c:
	  libs: wayland: update the opaque region in set_render_rect
	  gst_vaapi_window_wayland_set_render_rect() may be called from an arbitrary
	  thread. That thread may be responsible for making the window visible.
	  At that point another thread will block in gst_vaapi_window_wayland_sync()
	  because the frame callback will not be called until the window is visible.
	  If that happens, then acquiring the display lock in
	  gst_vaapi_window_wayland_set_render_rect() would result in a deadlock.
	  Cache the size of the opaque rectangle separately and create the opaque
	  region right before applying it to the surface.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/342>

2020-06-19 09:21:16 +0200  Hyunjun Ko <zzoon@igalia.com>

	* gst-libs/gst/vaapi/gstvaapiwindow.c:
	* gst-libs/gst/vaapi/gstvaapiwindow.h:
	* gst-libs/gst/vaapi/gstvaapiwindow_priv.h:
	* gst-libs/gst/vaapi/gstvaapiwindow_wayland.c:
	* gst/vaapi/gstvaapisink.c:
	  libs: window: implements gst_vaapi_window_set_render_rectangle
	  Implements new vmethod gst_vaapi_window_set_render_rectangle,
	  which is doing set the information of the rendered rectangle set by
	  user.
	  This is necessary on wayland at least to get exact information of
	  external surface.
	  And vaapisink calls this when gst_video_overlay_set_render_rectangle is
	  called.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/342>

2017-11-08 13:23:39 +0900  Hyunjun Ko <zzoon@igalia.com>

	* gst/vaapi/gstvaapisink.c:
	  vaapisink: implements gst_vaapisink_wayland_create_window_from_handle()
	  Implements gst_vaapisink_wayland_create_window_from_handle() to support
	  using external wl_surface.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/342>

2020-06-19 09:11:20 +0200  Michael Olbrich <m.olbrich@pengutronix.de>

	* gst-libs/gst/vaapi/gstvaapidisplay_wayland.c:
	* gst-libs/gst/vaapi/gstvaapidisplay_wayland_priv.h:
	* gst-libs/gst/vaapi/gstvaapiwindow.c:
	* gst-libs/gst/vaapi/gstvaapiwindow_wayland.c:
	* gst-libs/gst/vaapi/gstvaapiwindow_wayland.h:
	  libs: wayland: implement video overlay API
	  The Wayland sub-surfaces API is used to embed the video into an application
	  window.
	  See Appendix A. Wayland Protocol Specification as the following.
	  """
	  The aim of sub-surfaces is to offload some of the compositing work
	  within a window from clients to the compositor. A prime example is
	  a video player with decorations and video in separate wl_surface
	  objects.
	  This should allow the compositor to pass YUV video buffer processing to
	  dedicated overlay hardware when possible.
	  """
	  Added new method gst_vaapi_window_wayland_new_with_surface()
	  Original-Patch-By: Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
	  Zhao Halley <halley.zhao@intel.com>
	  changzhix.wei@intel.com
	  Hyunjun Ko <zzoon@igalia.com>
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/342>

2020-06-19 21:54:52 +0200  Michael Olbrich <m.olbrich@pengutronix.de>

	* gst-libs/gst/vaapi/gstvaapiwindow_wayland.c:
	  doc: libs: wayland: add 'transfer full' to the returnvalye of gst_vaapi_window_wayland_new
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/342>

2020-06-11 08:25:57 +0200  Michael Olbrich <m.olbrich@pengutronix.de>

	* gst-libs/gst/vaapi/gstvaapidisplay.c:
	  libs: display: always call close_display()
	  All close_display() have their own checks for use_foreign_display and only
	  destroy locally created objects in that case.
	  Without this objects other than the actuall foreign display itself are
	  leaked.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/342>

2020-07-30 23:37:10 +0800  He Junyan <junyan.he@intel.com>

	* gst-libs/gst/vaapi/video-format.h:
	  video-format: Add the missing P012_LE into GST_VAAPI_FORMATS_ALL.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/373>

2020-05-25 17:02:26 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* gst/vaapi/gstvaapidecode.c:
	* gst/vaapi/gstvaapipluginutil.c:
	* gst/vaapi/gstvaapipluginutil.h:
	  plugins: add gst_vaapi_caps_set_width_and_height_range()
	  This utility function is called internally by
	  gst_vaapi_build_caps_from_formats() and can be used outside.
	  This function sets frame size and framerates ranges.
	  Also gst_vaapi_build_caps_from_formats() is simplified.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/374>

2020-07-31 15:27:38 +0800  He Junyan <junyan.he@intel.com>

	* gst-libs/gst/vaapi/gstvaapidecoder.c:
	  libs: decoder: fix a crash issue when get_surface_formats.
	  Some context does not report any valid format that we can support.
	  For example, the HEVC 444 12 bits decoder context, all the formats
	  it reports is not supported now, which make the formats list a NULL
	  array. We should check that pointer before we use it.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/372>

2020-07-03 19:28:28 +0800  He Junyan <junyan.he@intel.com>

	* gst-libs/gst/vaapi/gstvaapiencoder_h265.c:
	  libs: encoder: h265: choose the profile based on allowed list.
	  We can decide the profile in ensure_profile(), based on allowed list
	  passed by the encode. We also need to check whether the entrypoint is
	  available. Once it is decided, no need to check the hw entrypoint
	  them again.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/349>

2020-07-29 22:05:41 +0800  He Junyan <junyan.he@intel.com>

	* gst/vaapi/gstvaapiencode_h265.c:
	  plugins: encode: h265: set all allowed profiles to encoder.
	  We should collect all allowed profiles and pass them to the inside
	  encoder, rather than just calculate the max profile idc.
	  The allowed profiles should also be supported by the HW.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/349>

2020-07-29 22:32:55 +0800  He Junyan <junyan.he@intel.com>

	* gst-libs/gst/vaapi/gstvaapidisplay.c:
	* gst-libs/gst/vaapi/gstvaapidisplay.h:
	  libs: display: Add a helper function to get profiles by codec.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/349>

2020-07-03 01:28:28 +0800  He Junyan <junyan.he@intel.com>

	* gst/vaapi/gstvaapiencode_h265.c:
	  plugins: encode: h265: collect all allowed profiles to encoder.
	  We should collect all allowed profiles and pass them to the inside
	  encoder, rather than just calculate the max profile idc.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/349>

2020-07-03 00:53:31 +0800  He Junyan <junyan.he@intel.com>

	* gst-libs/gst/vaapi/gstvaapiencoder_h265.c:
	* gst-libs/gst/vaapi/gstvaapiencoder_h265.h:
	* gst/vaapi/gstvaapiencode_h265.c:
	  libs: encoder: h265: modify set_max_profile to set_allowed_profiles.
	  In h265, bigger profile idc may not be compatible with the small profile
	  idc. And more important, there are multi profiles with the same profile
	  idc. Such as main-422-10, main-444 and main-444-10, they all have profile
	  idc 4.
	  So recording the max profile idc is not enough, the encoder needs to know
	  all allowed profiles when deciding the real profile.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/349>

2020-07-02 23:33:31 +0800  He Junyan <junyan.he@intel.com>

	* gst-libs/gst/vaapi/gstvaapiencoder_h265.c:
	  libs: encoder: h265: No need to check hw_max_profile.
	  In h265, higher profile idc number does not mean better compression
	  performance and may be not compatible with the lower profile idc.
	  So, it is not suitable to find the heighest idc for hw to ensure the
	  compatibility.
	  On the other side, when the entrypoint of the selected profile is valid,
	  it means the hw really support this profile, no need to check it again.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/349>

2020-04-08 19:41:09 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* gst/vaapi/gstvaapipostproc.c:
	  vaapipostproc: early return if fixate srcpad caps fails
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/371>

2020-07-29 13:39:44 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* gst/vaapi/gstvaapipluginutil.c:
	  vaapipluginutil: simplify gst_vaapi_find_preferred_caps_feature()
	  Generalize the way how the preferred color format is chosen. Also
	  use new GStreamre API as syntatic sugar.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/370>

2020-07-29 14:22:18 +0800  He Junyan <junyan.he@intel.com>

	* gst-libs/gst/vaapi/gstvaapidecoder.c:
	* gst-libs/gst/vaapi/gstvaapiprofile.c:
	* gst-libs/gst/vaapi/gstvaapiprofile.h:
	* gst/vaapi/gstvaapidecode.c:
	* gst/vaapi/gstvaapiencode.c:
	  libs: profile: Use get_codec_from_caps to get codec type.
	  There is no need to get a profile from the caps and then convert
	  that profile into codec type. We can get the codec type by caps's
	  name easily.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/358>

2020-07-12 19:42:40 +0800  He Junyan <junyan.he@intel.com>

	* gst-libs/gst/vaapi/gstvaapiprofile.c:
	  libs: profile: h265: Fix return value of from_codec_data_h265.
	  profile_from_codec_data_h265() returns wrong GstVaapiProfile for h265.
	  The codec data of caps contain the profile IDC, but the mapping between
	  profile IDC and GstVaapiProfile is wrong.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/358>

2020-07-07 00:46:23 +0800  He Junyan <junyan.he@intel.com>

	* gst/vaapi/gstvaapiencode_vp9.c:
	  plugins: encode: vp9: Implement vp9's allowed_profiles() func.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/188>

2020-07-08 16:30:17 +0800  He Junyan <junyan.he@intel.com>

	* gst/vaapi/gstvaapiencode_h264.c:
	* gst/vaapi/gstvaapiencode_h265.c:
	* gst/vaapi/gstvaapipluginutil.c:
	* gst/vaapi/gstvaapipluginutil.h:
	  plugin: util: rename h26x_encoder_get_profiles_from_caps().
	  Change its name to encoder_get_profiles_from_caps(). Other codecs such
	  as VP9 also needs to use this function.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/188>

2020-07-06 23:35:12 +0800  He Junyan <junyan.he@intel.com>

	* gst-libs/gst/vaapi/gstvaapiutils_vpx.c:
	* gst-libs/gst/vaapi/gstvaapiutils_vpx.h:
	* gst-libs/gst/vaapi/meson.build:
	  libs: utils: vpx: Add utils vpx to handle VP8/9 misc things.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/188>

2020-07-29 10:17:31 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* gst-libs/gst/vaapi/gstvaapicontext.c:
	* gst-libs/gst/vaapi/gstvaapidisplay.c:
	* gst-libs/gst/vaapi/gstvaapidisplay.h:
	  libs: display, context: handle broken jpeg decoder for i965 driver
	  JPEG decoding in i965 driver is pretty much broken, and the driver is
	  deprecated which mean authors only accept trivial fixes.
	  Surfaces for JPEG decoder context in i965 only handle IMC3[1] color
	  format which is not a common format in GStreamer. It can export it to
	  I420 at mapping raw bytes, but DMABuf exporting is problematic.
	  This patch artificially adds NV12 to the context format list when it's
	  JPEG decoder for i965 and force the usage of old VA-API for surface
	  creation without specifying color format. Also it artificially
	  disables the DMABuf announcement.
	  1. https://docs.microsoft.com/en-us/windows/win32/medfound/recommended-8-bit-yuv-formats-for-video-rendering#420-formats-16-bits-per-pixel
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/369>

2020-07-29 12:02:50 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* gst-libs/gst/vaapi/gstvaapicontext.c:
	  libs: context: change function to internal code style
	  Instead of a getter the function `get_preferred_format()` to
	  `ensure_preferred_format()` which aligns to the code style.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/369>

2020-07-28 20:00:09 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* gst/vaapi/gstvaapidecode.c:
	  vaapidecode: always merge profile caps in sink caps
	  This commit fixes a regression of e962069d, where if the profile's
	  caps doesn't have a caps profile, it's ignored.
	  This patch add a conditional jump if the caps doesn't have a profile
	  field to merge it.
	  Fixes: #271
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/368>

2020-07-28 12:22:40 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* meson.build:
	  build: request libdrm >= 2.4.98 and fallback
	  Fixes: #270
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/367>

2020-05-18 17:32:27 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* gst/vaapi/gstvaapidecode.c:
	  vaapidecode: dma caps only use reported color format
	  This fix pipelines without vaapipostproc after vaapi decoder, such as
	  gst-launch-1.0 filesrc location=~/file.mp4 ! parsebin ! vaapih264dec ! glimagesink
	  On EGL platforms, so DMABuf is used.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/366>

2020-02-07 17:10:45 +0100  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* gst/vaapi/gstvaapidecode.c:
	  vaapidecode: use allowed srcpad caps for caps query
	  Instead of using just the template caps use the current allowed
	  srcpad caps, which is created considering the current decoder
	  context.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/366>

2020-01-22 17:41:28 +0100  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* gst-libs/gst/vaapi/gstvaapidecoder.c:
	* gst-libs/gst/vaapi/gstvaapidecoder.h:
	* gst/vaapi/gstvaapidecode.c:
	  vaapidecode: build allowed srcpad caps from va context
	  Instead of generating allowed srcpad caps with generic information,
	  now it takes the size an formats limits from the decoder's context.
	  This is possible since srcpad caps are generated after the internal
	  decoder is created.
	  The patch replaces gst_vaapi_decoder_get_surface_formats() with
	  gst_vaapi_decoder_get_suface_attributes().
	  From these attributes, formats are only used for VASurface memory
	  caps feature. For system memory caps feature, the old
	  gst_vaapi_plugin_get_allowed_srcpad_caps() is still used, since
	  i965 jpeg decoder cannot deliver mappable format for gstreamer.
	  And for the other caps features (dmabuf and texture upload) the
	  same static list are used.
	  This patch also adds DMABuf caps feature only if the context
	  supports that memory type. Nonetheless, we keep the pre-defined
	  formats since they are the subset of common derive formats formats
	  supported either by amd/gallium and both intel drivers, since,
	  when exporting the fd through vaAcquireBufferHandle()/
	  vaReleaseBufferHandle(), the formats of the derivable image cannot
	  be retriebable from the driver. Later we'll use the attribute
	  formats for the DMABuf feature too, when the code be ported to
	  vaExportSurfaceHandle().
	  Finally, the allowed srcpad caps are removed if the internal decoder
	  is destroyed, since context attribues will change.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/366>

2020-02-07 16:50:52 +0100  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* gst/vaapi/gstvaapidecode.c:
	  vaapidecode: reorder src caps template
	  Since negotiation depends on caps order, first is VA, then DMABuf,
	  later GLUploadTexture (deprecated) and finally raw.
	  Also, for decoders, the possible available color formats for DMABuf
	  is extended to all the possible VA color formats.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/366>

2020-07-22 10:01:41 +0200  Michael Olbrich <m.olbrich@pengutronix.de>

	* gst-libs/gst/vaapi/gstvaapiwindow_wayland.c:
	  libs: window: wayland: use dmabuf protocol if available
	  Currently vaGetSurfaceBufferWl() is used to create wayland buffers.
	  Unfortunately this is not implemented by the 'media-driver' and Mesa VA-API
	  drivers. And the implementation provided by 'intel-vaapi-driver' is not
	  compatible with a Wayland server that uses the iris Mesa driver.
	  So create the Wayland buffers manually with the zwp_linux_dmabuf_v1 wayland
	  protocol. Formats and modifiers supported by the Wayland server are taken
	  into account. If necessary, VPP is enabled to convert the buffer into a
	  supported format.
	  Fall back to vaGetSurfaceBufferWl() if creating buffers via dambuf protocol
	  fails.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/346>

2020-07-21 10:03:19 +0200  Michael Olbrich <m.olbrich@pengutronix.de>

	* gst-libs/gst/vaapi/gstvaapiwindow.c:
	* gst-libs/gst/vaapi/gstvaapiwindow_priv.h:
	  libs: window: allow choosing the format for the vpp pool
	  Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/346>

2020-06-28 17:42:29 +0200  Michael Olbrich <m.olbrich@pengutronix.de>

	* gst-libs/gst/vaapi/video-format.c:
	* gst-libs/gst/vaapi/video-format.h:
	  video-format: add DRM formats to the mapping table
	  This will be needed for the DMABuf protocol support to map DRM formats to
	  vaapi and gstreamer formats.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/346>

2020-07-22 09:36:18 +0200  Michael Olbrich <m.olbrich@pengutronix.de>

	* gst-libs/gst/vaapi/gstvaapidisplay_wayland.c:
	* gst-libs/gst/vaapi/gstvaapidisplay_wayland_priv.h:
	* gst-libs/gst/vaapi/meson.build:
	  libs: display: wayland: add basic dmabuf protocol support
	  This is just the basic infrastructure. Hook up the interface and collect
	  all supported formats.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/346>

2020-07-06 09:59:40 +0200  Michael Olbrich <m.olbrich@pengutronix.de>

	* gst-libs/gst/vaapi/gstvaapiwindow_wayland.c:
	  libs: window: wayland: wait for configure before committing the first buffer
	  Committing the first buffer for a surface must not be done before
	  ack_configure() has been sent for the xdg_surface.
	  With weston, the commit will fail with "error 3: xdg_surface has never been
	  configured".
	  Wait in gst_vaapi_window_wayland_show() until configure is done to avoid
	  this.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/346>

2020-07-01 14:50:51 +0800  He Junyan <junyan.he@hotmail.com>

	* gst-libs/gst/vaapi/gstvaapiencoder_h265.c:
	  libs: encoder: h265: set no P frame automatically.
	  The double reference lists may be required by drivers and there should
	  be no P frames in the of stream. The old way of converting P frames to
	  B frames is by setting `low-delay-b` property, which is unconvenient
	  and has bad user experience, since most of the users do not know when
	  to set this property, and if it is not set correctly, the encoding
	  pipeline fails or even hangs on some platforms. VA driver now provides
	  a attribute to query whether both reference lists must be un-NULL for
	  a profile/entrypoint pair.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/284>

2020-04-15 16:26:55 +0800  He Junyan <junyan.he@hotmail.com>

	* gst-libs/gst/vaapi/gstvaapiencoder_h265.c:
	  libs: encoder: h265: Deprecate the low-delay-b property.
	  In HEVC, P and B definitions are different from AVC: P frames have
	  just one reference list and so 1 MV, while B frames have two reference
	  lists and so 2 MVs. No matter B or P, ist reference lists can contain
	  forward/backward reference. So P and B can both have bi-directions
	  dependency, the difference is just their reference list
	  number (i.e. MV number). This is different from the AVC.
	  The *low delay b mode* refers to a special HEVC mode, in which the
	  stream just contain I and B frames, without P frames, and all B frames
	  only have forward direction dependencies (i.e. all inter frames have 2
	  reference lists but no backward reference in both lists).  This is
	  similar to AVC I/P mode, but changing the P to the forward dependent
	  B.
	  The `low-delay-b` property is now just used to simply convert all P
	  frames to B frames when driver does not support P frames (so both
	  reference lists have the same references frames). This is a little
	  different from the meaning of low delay b mode (the two ref lists may
	  have the different reference frames). And the driver now can report
	  whether it supports P frames correctly, so there is no need to use
	  this property and deprecate it.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/284>

2020-07-24 12:54:31 +0200  Marc Leeman <m.leeman@televic.com>

	* gst/vaapi/gstvaapipostproc.c:
	  postproc: reconfigure after changing cropping values
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/365>

2020-07-09 13:49:29 +0800  He Junyan <junyan.he@intel.com>

	* gst/vaapi/gstvaapiencode.h:
	* gst/vaapi/gstvaapiencode_h264.c:
	* gst/vaapi/gstvaapiencode_h265.c:
	* gst/vaapi/gstvaapiencode_jpeg.c:
	* gst/vaapi/gstvaapiencode_mpeg2.c:
	* gst/vaapi/gstvaapiencode_vp8.c:
	* gst/vaapi/gstvaapiencode_vp9.c:
	  plugin: encode: Add static caps for template documentation.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/354>

2020-07-08 19:03:14 +0800  He Junyan <junyan.he@intel.com>

	* gst/vaapi/gstvaapiencode_vp9.c:
	  plugin: encode: vp9: Use the dynamically built src template caps.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/354>

2020-07-08 19:02:45 +0800  He Junyan <junyan.he@intel.com>

	* gst/vaapi/gstvaapiencode_vp8.c:
	  plugin: encode: vp8: Use the dynamically built src template caps.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/354>

2020-07-08 19:02:23 +0800  He Junyan <junyan.he@intel.com>

	* gst/vaapi/gstvaapiencode_jpeg.c:
	  plugin: encode: jpeg: Use the dynamically built src template caps.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/354>

2020-07-08 19:00:39 +0800  He Junyan <junyan.he@intel.com>

	* gst/vaapi/gstvaapiencode_mpeg2.c:
	  plugin: encode: mpeg2: Use the dynamically built src template caps.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/354>

2020-07-08 18:59:18 +0800  He Junyan <junyan.he@intel.com>

	* gst/vaapi/gstvaapiencode_h265.c:
	  plugin: encode: h265: Use the dynamically built src template caps.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/354>

2020-07-08 18:57:26 +0800  He Junyan <junyan.he@intel.com>

	* gst/vaapi/gstvaapiencode_h264.c:
	  plugin: encode: h264: Use the dynamically built src template caps.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/354>

2020-07-08 18:46:58 +0800  He Junyan <junyan.he@intel.com>

	* gst/vaapi/gstvaapiencode.h:
	* gst/vaapi/gstvaapiencode_h264.c:
	* gst/vaapi/gstvaapiencode_h265.c:
	* gst/vaapi/gstvaapiencode_jpeg.c:
	* gst/vaapi/gstvaapiencode_mpeg2.c:
	* gst/vaapi/gstvaapiencode_vp8.c:
	* gst/vaapi/gstvaapiencode_vp9.c:
	  plugin: encode: Store the coded caps in type's init data.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/354>

2020-07-08 18:30:00 +0800  He Junyan <junyan.he@intel.com>

	* gst/vaapi/gstvaapipluginutil.c:
	* gst/vaapi/gstvaapipluginutil.h:
	  plugin: util: add helper function build_template_coded_caps_by_codec()
	  Like build_template_raw_caps_by_codec(), this function can detect and
	  build the caps for specified codec based on the query of the profiles.
	  The result is coded caps such as video/x-h265, video/x-h264. The result
	  can be used as the template of encode's src or decode's sink.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/354>

2020-07-07 17:16:41 +0800  He Junyan <junyan.he@intel.com>

	* gst/vaapi/gstvaapiencode.h:
	* gst/vaapi/gstvaapipluginutil.c:
	* gst/vaapi/gstvaapipluginutil.h:
	  plugins: utils: rename build_template_caps_by_codec.
	  Rename the function build_template_caps_by_codec() to the name of
	  build_template_raw_caps_by_codec(). It can be used to collect all
	  raw video formats for encode's sink and decode's src.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/354>

2020-07-21 20:14:57 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* gst/vaapi/gstvaapidecode.c:
	* gst/vaapi/gstvaapipluginutil.c:
	* gst/vaapi/gstvaapipluginutil.h:
	  vaapidecode: merge common profiles before setting size range
	  The synthetic profiles, such as H264 baseline, H265 intra, etc. are
	  added at the end of processing all available VA profiles. This
	  generated an non-optimal caps for negotiation, since the synthetic
	  profiles don't have frame size ranges.
	  This patch adds those possible synthetic profiles when the associated
	  profile is processed, with its frame size ranges.
	  Now allowed sink caps are simpler.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/363>

2020-07-21 22:05:08 +0800  He Junyan <junyan.he@intel.com>

	* gst/vaapi/gstvaapipluginutil.c:
	  plugin: util: Add the missing DMA buffer input in template caps.
	  We pass the wrong parameter to gst_vaapi_build_caps_from_formats()
	  and lose the DMA feature in caps.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/362>

2020-07-14 18:13:56 +0800  He Junyan <junyan.he@intel.com>

	* gst-libs/gst/vaapi/gstvaapidecoder_h265.c:
	* gst-libs/gst/vaapi/gstvaapiprofile.c:
	* gst-libs/gst/vaapi/gstvaapiprofile.h:
	* gst-libs/gst/vaapi/gstvaapiutils_h265.c:
	* gst-libs/gst/vaapi/video-format.c:
	* gst/vaapi/gstvaapidecode.c:
	  libs: decoder: H265: Add MAIN_12 profile supporting.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/359>

2020-07-09 23:07:38 +0800  He Junyan <junyan.he@intel.com>

	* gst-libs/gst/vaapi/gstvaapiimage.c:
	* gst-libs/gst/vaapi/video-format.c:
	  video-format: Add P012_LE format.
	  It can be used as HEVC YUV_4:2:0 12bits stream's decoder output, and
	  also can be used as the input format for encoding HEVC YUV_4:2:0 12bits
	  stream.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/359>

2020-07-17 00:45:53 +0800  He Junyan <junyan.he@intel.com>

	* gst/vaapi/gstvaapidecode.c:
	  plugin: decode: correct ensure_allowed_sinkpad_caps's caps.
	  The decode allowed caps returned by ensure_allowed_sinkpad_caps()
	  contains all profiles of the whole VAAPI, like:
	  image/jpeg, width=(int)[ 0, 1638 4 ], height=(int)[ 0, 16384 ];
	  video/mpeg, mpegversion=(int)2, profile=(string){ simple, main },
	  width=(int)[ 0, 2048 ], height=(int)[ 0, 2048 ]; video/x-h264,
	  profile=(string){ main, high, constrained-baseline }, width=(int)[ 0,
	  4096 ], height=(int)[ 0, 4096 ]; video/x-h264, profile=(string){
	  constrained-high, progressive-high, baseline }; video/x-h265,
	  profile=(string){ main, main-intra }, width=(int)[ 0, 8192 ],
	  height=(int)[ 0, 8192 ]; video/x-vp8, width=(int)[ 0, 4096 ],
	  height=(int)[ 0, 4096 ]; video/x-wmv, wmvversion=(int)3,
	  format=(string)WVC1, profile=(string)advanced, width=(int)[ 0, 3840 ],
	  height=(int)[ 0, 3840 ]; video/x-wmv, wmvversion=(int)3,
	  profile=(string){ simple, main }, width=(int)[ 0, 3840 ],
	  height=(int)[ 0, 3840 ]
	  Which is verbose and may have latent problems. It should only contains
	  the profiles belong to its codec type. For example, h265 should only
	  return:
	  video/x-h265, profile=(string){ main, main-intra },
	  width=(int)[ 0, 8192 ], height=(int)[ 0, 8192 ]
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/361>

2020-07-13 11:06:18 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* gst/vaapi/gstvaapidecodebin.c:
	  vaapidecodebin: don't force NV12 since P010_10LE is now possible
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/360>

2020-07-12 20:34:31 +0800  He Junyan <junyan.he@intel.com>

	* gst-libs/gst/vaapi/gstvaapiprofile.c:
	  libs: profile: The VP9 profiles' name should be just "0,1,2,3"
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/357>

2020-07-08 17:33:32 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* gst-libs/gst/vaapi/gstvaapidecoder.c:
	* gst-libs/gst/vaapi/gstvaapidecoder.h:
	* gst/vaapi/gstvaapidecode.c:
	* gst/vaapi/gstvaapidecode.h:
	* tests/internal/simple-decoder.c:
	  vaapidecode: Remove NO_SURFACE error handling
	  Since surfaces are not bounded to decoding context it makes no sense
	  to keep the surface semaphore. This patch removes the handling of
	  this error.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/353>

2020-07-08 17:48:57 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* gst/vaapi/gstvaapidecode.c:
	* gst/vaapi/gstvaapidecode.h:
	  Revert "vaapidecode: drop non-keyframe in reverse playback"
	  Since the number of surfaces are not bounded to decoder context,
	  this hack is no longer needed.
	  This reverts commit 19c0c8a97385ce119440c4aad2d689fc79297435.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/353>

2019-12-06 14:21:33 +0800  He Junyan <junyan.he@hotmail.com>

	* gst-libs/gst/vaapi/gstvaapicontext.c:
	  libs: decoder: context: remove surfaces binding from context.
	  The vaCreateContext do not need to specify the surfaces for the
	  context creation now. So we do not need to bind any surface to the
	  context anymore. Surfaces should be the resource belong to display
	  and just be used in encoder/decoder context.
	  The previous manner has big limitation for decoder. The context's
	  surface number is decided by dpb size. All the surfaces in dpb will
	  be attached to a gstbuffer and be pushed to down stream, and the
	  decoder need to wait down stream free the surface and go on if not
	  enough surface available. For more and more use cases, this causes
	  deadlock. For example,
	  gst-launch-1.0 filesrc location=a.h264 ! h264parse ! vaapih264dec
	  ! x264enc ! filesink location=./output.h264
	  will cause deadlock and make the whole pipeline hang.
	  the x264enc encoder need to cache more than dpb size surfaces.
	  The best solution is seperating the surfaces number and the dpb size.
	  dpb and dpb size shoule be virtual concepts maintained by the decoder.
	  And let the surfaces_pool in context maintain the re-use of all surfaces.
	  For encoder, the situation is better, all the surfaces are just used
	  as reference frame and no need to be pushed to down stream. We can
	  just reserve and set the capacity of the surfaces_pool to meet the
	  request.
	  Fix: #147
	  Fix: #88
	  Co-Author: Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/353>

2020-07-08 17:50:51 +0100  Tim-Philipp Müller <tim@centricular.com>

	* meson.build:
	* scripts/extract-release-date-from-doap-file.py:
	  meson: set release date from .doap file for releases
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/355>

2020-07-08 11:57:52 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* gst/vaapi/gstvaapipluginbase.c:
	  plugins: use VA allocator by default on raw caps
	  Instead of using dmabuf allocator in source pad, when raw video caps
	  are negotiated, it uses VA allocator as before, since it is stable
	  in more use cases, for example transcoding, and more backend drivers.
	  Dmabuf allocator is only used when dmabuf caps feature is negotiated.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/352>

2020-06-06 18:47:35 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* gst/vaapi/gstvaapi.c:
	  vaapisink: rank it as secondary
	  iHD doesn't provide a full implemention for rendering surfaces and
	  i965 has problems in wayland. And I suspect this path is followed
	  by other driver implementations.
	  This patch demotes the rank of vaapisink to secondary, so it will
	  not be autoplugged avoiding bad experience of users.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/336>

2020-06-19 10:44:50 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* gst-libs/gst/vaapi/gstvaapidecoder_h264.c:
	* gst-libs/gst/vaapi/gstvaapidecoder_h265.c:
	  libs: decoder: h264, h265: in context at least 16 reference surfaces
	  Registering only stream's DBP size number of surfaces for decoding VA
	  surfaces brings issues for certain streams. This change register all
	  possible number of reference surfaces in a stream, which is 16.
	  Fixes: #94

2020-07-04 21:21:57 +0800  He Junyan <junyan.he@intel.com>

	* gst/vaapi/gstvaapiencode_h265.c:
	  plugins: encode: h265: Add profile,level,tier to output caps.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/350>

2020-07-04 21:08:20 +0800  He Junyan <junyan.he@intel.com>

	* gst-libs/gst/vaapi/gstvaapiencoder_h265.c:
	  libs: encoder: h265: init tier to GST_VAAPI_TIER_H265_UNKNOWN.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/350>

2020-07-04 21:05:49 +0800  He Junyan <junyan.he@intel.com>

	* gst-libs/gst/vaapi/gstvaapiencoder_h265.c:
	  libs: encoder: h265: fix a bug to get get_profile_tier_level.
	  0 is a valid value for h265 tier.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/350>

2020-07-02 19:19:35 +0800  He Junyan <junyan.he@intel.com>

	* gst-libs/gst/vaapi/gstvaapiencoder_h265.c:
	  libs: encoder: h265: no need to check the high compression tune.
	  The h265 encoder just support tune mode:
	  (0): none             - None
	  (3): low-power        - Low power mode
	  So, no need to check and set the high compression parameters.
	  And by the way, the current ensure_tuning_high_compression manner
	  of choosing the hightest profile idc as the best compression profile
	  is not correct. Unlike h264, in h265 the higher profile idc number
	  does not mean it has more compression tools, and so it has better
	  compression performance. It may even be un-compatible with the lower
	  profile idc. For example, the SCREEN_CONTENT_CODING profile with idc
	  9 is not compatible with 3D_MAIN profile with idc 8.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/348>

2020-07-03 02:04:14 +0100  Tim-Philipp Müller <tim@centricular.com>

	* meson.build:
	  Back to development

Tim-Philipp Müller's avatar
Tim-Philipp Müller committed
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
=== release 1.17.2 ===

2020-07-03 00:36:40 +0100  Tim-Philipp Müller <tim@centricular.com>

	* ChangeLog:
	* NEWS:
	* RELEASE:
	* gstreamer-vaapi.doap:
	* meson.build:
	  Release 1.17.2

2020-06-23 10:20:46 -0400  Thibault Saunier <tsaunier@igalia.com>

	* docs/gst_plugins_cache.json:
	* gst/vaapi/gstvaapiencode.c:
	  docs: Mark parent classes as plugin API

2020-06-23 00:07:57 +0200  Mathieu Duponchelle <mathieu@centricular.com>

	* docs/meson.build:
	  meson: mark plugins cache target as always stale

2020-06-19 23:34:11 -0400  Thibault Saunier <tsaunier@igalia.com>

	* docs/gst_plugins_cache.json:
	  doc: Stop documenting properties from parents

2020-06-20 00:28:35 +0100  Tim-Philipp Müller <tim@centricular.com>

	* meson.build:
	  Back to development

Tim-Philipp Müller's avatar
Tim-Philipp Müller committed
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
=== release 1.17.1 ===

2020-06-19 19:27:11 +0100  Tim-Philipp Müller <tim@centricular.com>

	* ChangeLog:
	* NEWS:
	* RELEASE:
	* gstreamer-vaapi.doap:
	* meson.build:
	  Release 1.17.1

2020-06-19 15:21:56 +0100  Tim-Philipp Müller <tim@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst-libs/gst/vaapi/gstvaapiencoder_jpeg.c:
	* gst-libs/gst/vaapi/gstvaapiencoder_mpeg2.c:
	* gst-libs/gst/vaapi/gstvaapiencoder_vp8.c:
	* gst-libs/gst/vaapi/gstvaapiencoder_vp9.c:
	  Update plugin docs and add more plugins
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/344>

2020-06-11 08:32:05 +0200  Michael Olbrich <m.olbrich@pengutronix.de>

	* gst-libs/gst/vaapi/gstvaapidisplay_wayland.c:
	  libs: wayland: display: only handle the first output
	  Right now, all outputs are handled. The means that the registry object for
	  all but the last are leaked. As a result the sizes are not used correctly.
	  With two outputs, at first the mode and physical size of the second output
	  are used. If the first output changes the mode, then the physical size of
	  the second output is used in combination with the resolution of the first
	  output. The resulting pixel aspect ratio is incorrect.
	  There seems to be no way to determine on which output the window is shown,
	  so just use the first one to get consistent results.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/341>

2020-06-11 18:15:17 +0800  He Junyan <junyan.he@hotmail.com>

	* gst/vaapi/gstvaapipluginbase.c:
	  plugins: pluginbase: Do not destroy display when _close()
	  When the element's state changes to NULL, it can still receive
	  queries, such as the image formats. The display is needed in such
	  queries but not well protected for MT safe.
	  For example, ensure_allowed_raw_caps() may still use the display
	  while it is disposed by gst_vaapi_plugin_base_close() because of
	  the state change.
	  We can keep the display until the element is destroyed. When the