• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* Gstreamer
2  * Copyright (C) 2020 Yeongjin Jeong <yeongjin.jeong@navercorp.com>
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Library General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Library General Public License for more details.
13  *
14  * You should have received a copy of the GNU Library General Public
15  * License along with this library; if not, write to the
16  * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
17  * Boston, MA 02110-1301, USA.
18  */
19 
20 #include <gst/check/gstcheck.h>
21 #include <gst/codecparsers/gstvp9parser.h>
22 
23 /* A super frame data */
24 static const guint8 vp9_frame_data[] = {
25   0x84, 0x00, 0x40, 0x84, 0x60, 0x1f, 0xe0, 0x11, 0xfc, 0x86, 0x23, 0x30, 0x00,
26   0x02, 0x80, 0x70, 0x69, 0x60, 0x00, 0x00, 0x7e, 0x3f, 0x01, 0x60, 0xce,
27   0xa0, 0x11, 0xbc, 0x02, 0x76, 0xf0, 0xd0, 0xb8, 0x2d, 0xb6, 0x1a, 0xc1,
28   0xff, 0x36, 0x8d, 0xad, 0x1d, 0xde, 0x8e, 0x29, 0x47, 0xdd, 0x39, 0x65,
29   0xf3, 0xf9, 0x45, 0xbe, 0xdb, 0x5b, 0xee, 0xe7, 0x36, 0x83, 0xe6, 0xaa,
30   0xba, 0xf3, 0x2b, 0xe7, 0xab, 0xda, 0x07, 0xa3, 0xf5, 0x06, 0x7a, 0x19,
31   0xdf, 0x37, 0x0f, 0x59, 0xae, 0x01, 0x63, 0x41, 0xf3, 0x48, 0x8a, 0x8c,
32   0xb4, 0x47, 0x99, 0xe5, 0xf0, 0x48, 0x31, 0xd5, 0x2d, 0xd3, 0x01, 0x9d,
33   0x87, 0xf1, 0x19, 0x63, 0xf7, 0x7e, 0xc4, 0x12, 0xa8, 0x85, 0xf3, 0x1d,
34   0xd9, 0xc6, 0xcd, 0x61, 0x31, 0xec, 0x09, 0x6d, 0xfc, 0x96, 0x57, 0x26,
35   0x70, 0xcc, 0xe4, 0x9e, 0x31, 0x05, 0x40, 0xa6, 0xc0, 0x2b, 0x44, 0x7b,
36   0x80, 0xf7, 0x30, 0xdc, 0xa3, 0xcc, 0x88, 0xf1, 0x0b, 0x0f, 0x6c, 0xe9,
37   0x85, 0xe8, 0x1c, 0xf9, 0x3f, 0xff, 0x46, 0xa3, 0x39, 0xa5, 0xab, 0x03,
38   0x20, 0xad, 0x42, 0xdb, 0xb0, 0x84, 0x39, 0xff, 0xc6, 0xf7, 0xe8, 0x3e,
39   0xe4, 0x0e, 0x03, 0x29, 0xc0, 0x8d, 0xbf, 0xeb, 0xfd, 0x8c, 0x6b, 0x17,
40   0x49, 0x66, 0xfa, 0xab, 0xfc, 0xb3, 0x23, 0xae, 0xad, 0x92, 0xa2, 0x8b,
41   0xff, 0xec, 0x22, 0x7c, 0xc4, 0x08, 0xdc, 0x85, 0xad, 0x9f, 0x63, 0x62,
42   0x75, 0x05, 0x32, 0x84, 0x19, 0x61, 0xc0, 0x8f, 0x1f, 0x25, 0xd4, 0x3c,
43   0x7a, 0x4d, 0x03, 0x0c, 0xfa, 0xb6, 0x04, 0xad, 0x3f, 0xa7, 0x0f, 0x5a,
44   0x08, 0xda, 0xc0, 0xd4, 0x1b, 0xf3, 0x64, 0xc9, 0xaa, 0xe6, 0x97, 0x49,
45   0x17, 0xe6, 0x16, 0xaa, 0x7f, 0x0a, 0x35, 0xed, 0xac, 0x87, 0x9e, 0x16,
46   0xea, 0x08, 0x05, 0xa4, 0xd5, 0xdd, 0x19, 0xc5, 0x8c, 0x3c, 0x6d, 0x79,
47   0xe2, 0x05, 0x0f, 0x08, 0x54, 0x6d, 0x10, 0xda, 0x07, 0x92, 0x9b, 0xb5,
48   0x29, 0xec, 0x8c, 0xeb, 0xc6, 0xcb, 0xd7, 0xff, 0x66, 0x37, 0x18, 0x81,
49   0x53, 0x4d, 0x1c, 0xc3, 0x13, 0xdd, 0x46, 0x0b, 0xf8, 0x0f, 0x37, 0x95,
50   0xab, 0x1a, 0xfc, 0xa7, 0xfb, 0xb5, 0x15, 0xe8, 0x8f, 0xca, 0x88, 0x78,
51   0x35, 0x89, 0xe4, 0xfc, 0xf4, 0x57, 0x7c, 0x4f, 0x5d, 0xdb, 0x00, 0x55,
52   0x75, 0xf7, 0x77, 0x38, 0x74, 0x8b, 0x4b, 0x8c, 0x22, 0x8e, 0xc6, 0x4e,
53   0xaf, 0x4a, 0x08, 0xa2, 0x70, 0xec, 0xbe, 0xd4, 0x5c, 0x04, 0x5f, 0xad,
54   0xbc, 0xbf, 0xfe, 0x24, 0xc2, 0xef, 0x53, 0x8e, 0x9e, 0xef, 0xe5, 0xea,
55   0x1d, 0x4c, 0xbf, 0x72, 0x3e, 0xc9, 0xcf, 0xaa, 0xaf, 0x00, 0x33, 0x04,
56   0xca, 0x06, 0xe8, 0xff, 0xf8, 0x6b, 0x9b, 0x8e, 0x91, 0x0b, 0x35, 0x55,
57   0x4c, 0xd0, 0x48, 0x3e, 0xc0, 0xf9, 0xf7, 0xf5, 0x31, 0x48, 0x0a, 0xfc,
58   0xb0, 0xa6, 0xe2, 0x87, 0x62, 0xee, 0x0e, 0xd3, 0x63, 0x1d, 0xd7, 0x61,
59   0xeb, 0x1c, 0x55, 0x56, 0xd7, 0xec, 0x38, 0x88, 0xce, 0x0a, 0x6d, 0xff,
60   0x70, 0x0c, 0x26, 0x7e, 0x6d, 0x6f, 0x38, 0xbd, 0xd0, 0xf3, 0xf4, 0xd7,
61   0x2b, 0xcb, 0xaf, 0xab, 0x75, 0x7a, 0xc8, 0xaf, 0x33, 0x68, 0xdc, 0x70,
62   0xec, 0xdc, 0x70, 0x31, 0xf8, 0x2f, 0xfb, 0x8e, 0xde, 0x12, 0xd3, 0x47,
63   0x05, 0x67, 0xe4, 0x2b, 0x5e, 0xed, 0x8d, 0x0b, 0x9f, 0x19, 0x86, 0xb1,
64   0x7a, 0x3c, 0x84, 0x23, 0x45, 0x38, 0xc5, 0x90, 0xee, 0x63, 0xc0, 0x3b,
65   0x90, 0x0c, 0x04, 0x04, 0x93, 0x6f, 0x9e, 0x11, 0x5a, 0x5d, 0x48, 0x7c,
66   0xd8, 0x58, 0x1c, 0x23, 0x58, 0x21, 0xb5, 0x0c, 0xc2, 0x3c, 0x2e, 0x5b,
67   0x60, 0x3a, 0xa5, 0x7d, 0x08, 0xc2, 0x05, 0x78, 0x07, 0xbf, 0xb7, 0xed,
68   0x7f, 0x45, 0xa5, 0xd7, 0x7e, 0xbe, 0xd3, 0x73, 0x26, 0x59, 0x49, 0x82,
69   0xc3, 0xf0, 0x89, 0x62, 0x7d, 0xba, 0x64, 0x08, 0x88, 0xf2, 0x30, 0x4b,
70   0x06, 0x0f, 0x8d, 0x40, 0xf4, 0x02, 0x7f, 0x6f, 0xa4, 0x2b, 0x23, 0xe2,
71   0x1e, 0x48, 0xf1, 0xdc, 0xa5, 0x88, 0xcf, 0xe1, 0x8c, 0x0b, 0x05, 0x58,
72   0x1a, 0x2b, 0x46, 0x78, 0xea, 0x9e, 0x1e, 0xf5, 0xae, 0x66, 0x6c, 0x40,
73   0xd1, 0x14, 0x77, 0x06, 0x7a, 0x01, 0x2d, 0x1c, 0x99, 0xb7, 0x95, 0x0a,
74   0x23, 0x24, 0x4e, 0x51, 0xa3, 0x59, 0x19, 0xd2, 0x4f, 0xe1, 0xf2, 0x6a,
75   0xe2, 0x70, 0xdc, 0x26, 0x47, 0x4e, 0xb2, 0xc8, 0x80, 0x10, 0x45, 0x09,
76   0x56, 0x14, 0x93, 0xee, 0x23, 0xe3, 0xf4, 0x48, 0xb2, 0xe0, 0x31, 0x16,
77   0xfc, 0xfa, 0xf1, 0xf0, 0xcd, 0xee, 0x0c, 0x42, 0xe1, 0x2f, 0xda, 0x67,
78   0xd7, 0x12, 0xea, 0xcb, 0xe5, 0xd7, 0x7b, 0x1c, 0xe4, 0xc2, 0xd2, 0x14,
79   0xe6, 0x14, 0xcb, 0x7f, 0xc8, 0xe7, 0x49, 0xc9, 0x2b, 0x4d, 0x2b, 0xad,
80   0x8a, 0xac, 0x2c, 0xb1, 0xac, 0x3d, 0xe3, 0x9b, 0x2a, 0xd2, 0x1e, 0x16,
81   0xf4, 0x57, 0xad, 0x25, 0xe1, 0xbe, 0xbf, 0x45, 0x6e, 0xf6, 0xcb, 0x5a,
82   0x5b, 0x72, 0x04, 0xb5, 0x9a, 0x86, 0x80, 0x06, 0x0d, 0x38, 0x6f, 0xbe,
83   0x50, 0x64, 0xbe, 0x66, 0xde, 0x11, 0xfe, 0xc3, 0x38, 0xf9, 0x76, 0x65,
84   0x2e, 0x2b, 0xf2, 0x6b, 0x3b, 0x61, 0x08, 0x65, 0x6a, 0xe7, 0xdf, 0x5c,
85   0x9c, 0xca, 0xe1, 0x58, 0x41, 0xb8, 0x40, 0xff, 0x27, 0xf9, 0x95, 0x37,
86   0x30, 0x3f, 0x98, 0x52, 0x27, 0x8a, 0xa1, 0x99, 0x80, 0x81, 0x2f, 0x60,
87   0xfd, 0xab, 0x21, 0xb3, 0x0b, 0x55, 0x5b, 0x5d, 0xff, 0xbe, 0xba, 0x98,
88   0x40, 0x17, 0x50, 0x58, 0x9b, 0x61, 0x4b, 0x49, 0x70, 0x20, 0x7d, 0xd4,
89   0xac, 0xf1, 0x4f, 0x73, 0x0f, 0x4a, 0x8e, 0x11, 0x83, 0x86, 0x53, 0x1c,
90   0xb1, 0xa6, 0x8f, 0xd7, 0xfb, 0xaf, 0x20, 0x09, 0x9e, 0x10, 0xcb, 0xa0,
91   0x45, 0x51, 0x48, 0xae, 0xea, 0x8f, 0xbb, 0x94, 0x73, 0xaf, 0x6e, 0x8f,
92   0x1d, 0xd0, 0xb7, 0xd5, 0x64, 0x11, 0xaa, 0xf6, 0x2e, 0x5f, 0xcc, 0x2f,
93   0x06, 0x63, 0xe4, 0x24, 0x41, 0x66, 0x1d, 0x08, 0x7a, 0xe4, 0xf0, 0xe6,
94   0xdc, 0x70, 0xad, 0xb4, 0xd7, 0x65, 0x7e, 0x76, 0x6f, 0x44, 0x66, 0x6b,
95   0xfc, 0xa4, 0x92, 0x6b, 0x7e, 0x31, 0x9e, 0x9c, 0xd6, 0xc7, 0x4e, 0x91,
96   0xab, 0xab, 0x04, 0x9e, 0x5f, 0x7d, 0x2d, 0x1b, 0x99, 0x10, 0x13, 0xc5,
97   0x5c, 0xf4, 0xb4, 0x85, 0x47, 0x66, 0x54, 0xc8, 0x6c, 0x4b, 0x1e, 0x99,
98   0x2a, 0x87, 0x3e, 0x19, 0xf2, 0x97, 0xf8, 0xfa, 0xbb, 0x10, 0xbc, 0x28,
99   0x1f, 0x68, 0x06, 0x3d, 0xf7, 0xe6, 0xfb, 0x4b, 0x8f, 0x2a, 0xa8, 0x50,
100   0xe0, 0xb4, 0x12, 0x6b, 0x5c, 0x62, 0x96, 0x14, 0xd6, 0xb3, 0xd5, 0x6d,
101   0xc1, 0xc8, 0x4f, 0x49, 0xd5, 0x4e, 0x18, 0x33, 0x52, 0x6d, 0x23, 0xb6,
102   0x3c, 0xc9, 0x21, 0xd9, 0xd9, 0xf0, 0x0b, 0x1f, 0xc8, 0x08, 0x1b, 0x15,
103   0xf6, 0xff, 0xf1, 0x95, 0x7f, 0xa9, 0xf1, 0x01, 0xa6, 0xe0, 0x85, 0x8a,
104   0x45, 0x04, 0xd9, 0x07, 0x6e, 0x16, 0x44, 0x83, 0x94, 0x1b, 0xe4, 0x25,
105   0x91, 0xe1, 0x20, 0xdd, 0xf2, 0x77, 0xb5, 0xc5, 0x4a, 0xbf, 0x6d, 0x6d,
106   0x40, 0xd1, 0x40, 0x99, 0x29, 0xb6, 0x8b, 0x9b, 0x10, 0xd0, 0xf8, 0x4c,
107   0x92, 0x95, 0x83, 0x0b, 0x8e, 0x22, 0x06, 0xf6, 0xbf, 0x93, 0x39, 0x89,
108   0xf7, 0x7c, 0xf2, 0x6c, 0x03, 0x16, 0x0d, 0xd3, 0x80, 0x7f, 0x48, 0x18,
109   0xbc, 0x49, 0x32, 0x70, 0x43, 0x3d, 0xdc, 0xe6, 0x96, 0x86, 0xef, 0x39,
110   0x50, 0x36, 0xfe, 0xd0, 0xe0, 0xaa, 0x83, 0xaf, 0xac, 0x0c, 0x70, 0x4c,
111   0x91, 0x93, 0x5f, 0xfc, 0xfb, 0xc2, 0xce, 0x69, 0xec, 0xcf, 0x06, 0x44,
112   0xc8, 0xc9, 0x73, 0x7d, 0x07, 0x4d, 0xa8, 0x76, 0xe0, 0xf3, 0x5b, 0xa1,
113   0xd8, 0xf5, 0x04, 0x00, 0xaf, 0x53, 0x15, 0x35, 0x75, 0xce, 0xcd, 0x26,
114   0x6e, 0xd7, 0xc4, 0x23, 0x13, 0xf3, 0xe7, 0x47, 0x9b, 0x76, 0x70, 0x32,
115   0x74, 0xaa, 0x9c, 0x9a, 0x71, 0xe7, 0xe3, 0x2a, 0xbb, 0xe5, 0xfb, 0x7e,
116   0x34, 0x34, 0xb6, 0xae, 0xc2, 0xd5, 0x55, 0x6c, 0xf4, 0x6b, 0x4f, 0x7a,
117   0x04, 0xa9, 0x8e, 0x63, 0xbf, 0x8a, 0x92, 0x9b, 0xf1, 0xf8, 0xc9, 0xc5,
118   0x57, 0x5b, 0x2d, 0x08, 0x2f, 0xcf, 0x2d, 0xdd, 0x9f, 0x61, 0x12, 0x9f,
119   0x0b, 0xd9, 0x58, 0xc6, 0x83, 0xd3, 0x5f, 0x9c, 0x99, 0x6f, 0xe2, 0xc8,
120   0x36, 0x99, 0xaa, 0xe5, 0xda, 0x33, 0xee, 0x9a, 0xc4, 0xa5, 0x00, 0x78,
121   0x91, 0x8a, 0xf7, 0x17, 0x9a, 0xf1, 0x9d, 0x89, 0x48, 0x84, 0xcb, 0x71,
122   0x8c, 0xfe, 0x63, 0xbc, 0x9d, 0xbe, 0x2c, 0xf2, 0xd0, 0xa3, 0x8d, 0xe0,
123   0xdf, 0xd1, 0x00, 0xe4, 0x85, 0xab, 0x61, 0x97, 0x45, 0x63, 0x57, 0xeb,
124   0xff, 0x17, 0xf9, 0xc5, 0xa8, 0x22, 0x96, 0x99, 0xea, 0xa0, 0x7e, 0x4f,
125   0xd8, 0x8c, 0xac, 0xd1, 0x4d, 0x79, 0xc6, 0x45, 0xa6, 0xb9, 0x69, 0x29,
126   0x4a, 0xd3, 0xa5, 0x8d, 0xd5, 0xed, 0x3f, 0x78, 0xe8, 0x9b, 0x4e, 0xff,
127   0xda, 0xb1, 0x9f, 0x13, 0x53, 0x11, 0x00, 0xb5, 0x00, 0x36, 0x00, 0xc0,
128   0xe2, 0x45, 0x29, 0x4c, 0xe9, 0xd6, 0x7f, 0xd6, 0xc6, 0x2e, 0x12, 0x6f,
129   0xea, 0xeb, 0xcc, 0xae, 0x89, 0x05, 0xbe, 0x6b, 0x6e, 0x6a, 0x8a, 0x73,
130   0xd5, 0xba, 0x28, 0x66, 0x3e, 0x35, 0xdc, 0x1f, 0x77, 0x30, 0x74, 0x52,
131   0x80, 0x51, 0x6e, 0xaa, 0x69, 0x2c, 0x4a, 0x5c, 0x69, 0x3d, 0x40, 0x7b,
132   0x34, 0x1e, 0xe0, 0xd7, 0xf2, 0xf8, 0x8e, 0x27, 0xa1, 0xb2, 0x49, 0x82,
133   0x46, 0x4b, 0x61, 0x13, 0xf3, 0xab, 0x4a, 0xf7, 0x59, 0xbb, 0x03, 0xe9,
134   0xcf, 0x4d, 0x6b, 0x19, 0xa4, 0x6f, 0xba, 0x23, 0xf2, 0x5e, 0xb9, 0x8b,
135   0x75, 0xf4, 0x56, 0x48, 0x42, 0x64, 0xed, 0x78, 0xc7, 0xb3, 0x41, 0x60,
136   0x86, 0x00, 0x41, 0x0c, 0xc0, 0x3f, 0xc0, 0x23, 0xf8, 0x14, 0x4e, 0x00,
137   0x00, 0x05, 0x70, 0x59, 0x00, 0x80, 0x00, 0x56, 0xfe, 0x01, 0x95, 0x4b,
138   0x59, 0xf5, 0xee, 0xf0, 0x12, 0xf1, 0xd9, 0x43, 0xcb, 0xa2, 0xcb, 0x49,
139   0x63, 0xa2, 0x30, 0xea, 0xd6, 0xc6, 0x38, 0x34, 0x29, 0x26, 0x4d, 0xfa,
140   0x69, 0xf5, 0x31, 0xe1, 0x35, 0x24, 0x42, 0x18, 0x38, 0x46, 0x4c, 0xad,
141   0x1e, 0x2f, 0x99, 0x2f, 0x30, 0x5c, 0x6f, 0x8a, 0xdc, 0xf6, 0x72, 0xb4,
142   0x23, 0xde, 0xf6, 0x7c, 0x8a, 0x1a, 0x4d, 0xa8, 0x0c, 0xa3, 0x49, 0x10,
143   0xf6, 0x94, 0xcf, 0x21, 0x21, 0x4d, 0xcf, 0x0a, 0x9b, 0xd0, 0x54, 0xd5,
144   0xa3, 0xdf, 0x2f, 0x26, 0x17, 0xfd, 0x79, 0xe8, 0x2d, 0x98, 0xcf, 0xb9,
145   0x57, 0x24, 0xa3, 0x0e, 0x7f, 0xaf, 0x3f, 0x15, 0xb9, 0x33, 0xdd, 0xfd,
146   0x8a, 0x7e, 0xb9, 0x1b, 0xda, 0xaa, 0x0c, 0xfe, 0xf9, 0xbf, 0xaf, 0x01,
147   0x7a, 0x0e, 0x4b, 0xc3, 0x02, 0x7a, 0x54, 0xb4, 0x5d, 0x70, 0x90, 0xa0,
148   0x83, 0xf0, 0x46, 0x2f, 0x38, 0x94, 0x1c, 0xb6, 0xb8, 0x7f, 0xfe, 0x3f,
149   0xcd, 0xa5, 0xb6, 0xb7, 0x1b, 0x0f, 0x83, 0x4c, 0x83, 0xce, 0x44, 0xb0,
150   0xb4, 0x06, 0xaa, 0x62, 0x1e, 0xd9, 0xf4, 0x4c, 0x9e, 0x8a, 0x80, 0x5e,
151   0xe3, 0xd3, 0xf2, 0xb3, 0x12, 0xe7, 0xa3, 0xb9, 0xb4, 0xb0, 0xab, 0xdf,
152   0x24, 0xd2, 0x4f, 0x4c, 0xc9, 0x1f, 0x16, 0x08, 0x84, 0x83, 0x02, 0x62,
153   0x83, 0xb1, 0x92, 0x2a, 0x15, 0x5e, 0xda, 0xbe, 0x3b, 0x00, 0xc9, 0x35,
154   0x05, 0xd6, 0x00, 0xc9
155 };
156 
GST_START_TEST(test_vp9_parse_superframe)157 GST_START_TEST (test_vp9_parse_superframe)
158 {
159   GstVp9Parser *parser;
160   GstVp9SuperframeInfo superframe_info;
161 
162   parser = gst_vp9_parser_new ();
163 
164   memset (&superframe_info, 0, sizeof (superframe_info));
165 
166   assert_equals_int (gst_vp9_parser_parse_superframe_info (parser,
167           &superframe_info, vp9_frame_data, sizeof (vp9_frame_data)),
168       GST_VP9_PARSER_OK);
169 
170   assert_equals_int (superframe_info.bytes_per_framesize, 2);
171   assert_equals_int (superframe_info.frames_in_superframe, 2);
172   assert_equals_int (superframe_info.superframe_index_size, 6);
173 
174   assert_equals_int (superframe_info.frame_sizes[0], 1333);
175   assert_equals_int (superframe_info.frame_sizes[1], 214);
176 
177   gst_vp9_parser_free (parser);
178 }
179 
180 GST_END_TEST;
181 
182 static Suite *
vp9parsers_suite(void)183 vp9parsers_suite (void)
184 {
185   Suite *s = suite_create ("VP9 Parser library");
186 
187   TCase *tc_chain = tcase_create ("general");
188 
189   suite_add_tcase (s, tc_chain);
190   tcase_add_test (tc_chain, test_vp9_parse_superframe);
191 
192   return s;
193 }
194 
195 GST_CHECK_MAIN (vp9parsers);
196