Lines Matching refs:frame

56  * @frame: HDMI AVI infoframe
60 int hdmi_avi_infoframe_init(struct hdmi_avi_infoframe *frame)
62 memset(frame, 0, sizeof(*frame));
64 frame->type = HDMI_INFOFRAME_TYPE_AVI;
65 frame->version = 2;
66 frame->length = HDMI_AVI_INFOFRAME_SIZE;
74 * @frame: HDMI AVI infoframe
78 * Packs the information contained in the @frame structure into a binary
86 ssize_t hdmi_avi_infoframe_pack(struct hdmi_avi_infoframe *frame, void *buffer,
92 length = HDMI_INFOFRAME_HEADER_SIZE + frame->length;
99 ptr[0] = frame->type;
100 ptr[1] = frame->version;
101 ptr[2] = frame->length;
107 ptr[0] = ((frame->colorspace & 0x3) << 5) | (frame->scan_mode & 0x3);
113 if (frame->active_aspect & 0xf)
117 if (frame->top_bar || frame->bottom_bar)
120 if (frame->left_bar || frame->right_bar)
123 ptr[1] = ((frame->colorimetry & 0x3) << 6) |
124 ((frame->picture_aspect & 0x3) << 4) |
125 (frame->active_aspect & 0xf);
127 ptr[2] = ((frame->extended_colorimetry & 0x7) << 4) |
128 ((frame->quantization_range & 0x3) << 2) |
129 (frame->nups & 0x3);
131 if (frame->itc)
134 ptr[3] = frame->video_code & 0x7f;
136 ptr[4] = ((frame->ycc_quantization_range & 0x3) << 6) |
137 ((frame->content_type & 0x3) << 4) |
138 (frame->pixel_repeat & 0xf);
140 ptr[5] = frame->top_bar & 0xff;
141 ptr[6] = (frame->top_bar >> 8) & 0xff;
142 ptr[7] = frame->bottom_bar & 0xff;
143 ptr[8] = (frame->bottom_bar >> 8) & 0xff;
144 ptr[9] = frame->left_bar & 0xff;
145 ptr[10] = (frame->left_bar >> 8) & 0xff;
146 ptr[11] = frame->right_bar & 0xff;
147 ptr[12] = (frame->right_bar >> 8) & 0xff;
157 * @frame: HDMI SPD infoframe
163 int hdmi_spd_infoframe_init(struct hdmi_spd_infoframe *frame,
166 memset(frame, 0, sizeof(*frame));
168 frame->type = HDMI_INFOFRAME_TYPE_SPD;
169 frame->version = 1;
170 frame->length = HDMI_SPD_INFOFRAME_SIZE;
172 strncpy(frame->vendor, vendor, sizeof(frame->vendor));
173 strncpy(frame->product, product, sizeof(frame->product));
181 * @frame: HDMI SPD infoframe
185 * Packs the information contained in the @frame structure into a binary
193 ssize_t hdmi_spd_infoframe_pack(struct hdmi_spd_infoframe *frame, void *buffer,
199 length = HDMI_INFOFRAME_HEADER_SIZE + frame->length;
206 ptr[0] = frame->type;
207 ptr[1] = frame->version;
208 ptr[2] = frame->length;
214 memcpy(ptr, frame->vendor, sizeof(frame->vendor));
215 memcpy(ptr + 8, frame->product, sizeof(frame->product));
217 ptr[24] = frame->sdi;
227 * @frame: HDMI audio infoframe
231 int hdmi_audio_infoframe_init(struct hdmi_audio_infoframe *frame)
233 memset(frame, 0, sizeof(*frame));
235 frame->type = HDMI_INFOFRAME_TYPE_AUDIO;
236 frame->version = 1;
237 frame->length = HDMI_AUDIO_INFOFRAME_SIZE;
245 * @frame: HDMI audio infoframe
249 * Packs the information contained in the @frame structure into a binary
257 ssize_t hdmi_audio_infoframe_pack(struct hdmi_audio_infoframe *frame,
264 length = HDMI_INFOFRAME_HEADER_SIZE + frame->length;
271 if (frame->channels >= 2)
272 channels = frame->channels - 1;
276 ptr[0] = frame->type;
277 ptr[1] = frame->version;
278 ptr[2] = frame->length;
284 ptr[0] = ((frame->coding_type & 0xf) << 4) | (channels & 0x7);
285 ptr[1] = ((frame->sample_frequency & 0x7) << 2) |
286 (frame->sample_size & 0x3);
287 ptr[2] = frame->coding_type_ext & 0x1f;
288 ptr[3] = frame->channel_allocation;
289 ptr[4] = (frame->level_shift_value & 0xf) << 3;
291 if (frame->downmix_inhibit)
302 * @frame: HDMI vendor infoframe
306 int hdmi_vendor_infoframe_init(struct hdmi_vendor_infoframe *frame)
308 memset(frame, 0, sizeof(*frame));
310 frame->type = HDMI_INFOFRAME_TYPE_VENDOR;
311 frame->version = 1;
313 frame->oui = HDMI_IEEE_OUI;
319 frame->s3d_struct = HDMI_3D_STRUCTURE_INVALID;
327 * @frame: HDMI infoframe
331 * Packs the information contained in the @frame structure into a binary
339 ssize_t hdmi_vendor_infoframe_pack(struct hdmi_vendor_infoframe *frame,
345 /* empty info frame */
346 if (frame->vic == 0 && frame->s3d_struct == HDMI_3D_STRUCTURE_INVALID)
350 if (frame->vic != 0 && frame->s3d_struct != HDMI_3D_STRUCTURE_INVALID)
354 if (frame->s3d_struct >= HDMI_3D_STRUCTURE_SIDE_BY_SIDE_HALF)
355 frame->length = 6;
357 frame->length = 5;
359 length = HDMI_INFOFRAME_HEADER_SIZE + frame->length;
366 ptr[0] = frame->type;
367 ptr[1] = frame->version;
368 ptr[2] = frame->length;
376 if (frame->vic) {
378 ptr[8] = frame->vic;
381 ptr[8] = (frame->s3d_struct & 0xf) << 4;
382 if (frame->s3d_struct >= HDMI_3D_STRUCTURE_SIDE_BY_SIDE_HALF)
383 ptr[9] = (frame->s3d_ext_data & 0xf) << 4;
396 hdmi_vendor_any_infoframe_pack(union hdmi_vendor_any_infoframe *frame,
400 if (frame->any.oui != HDMI_IEEE_OUI)
403 return hdmi_vendor_infoframe_pack(&frame->hdmi, buffer, size);
408 * @frame: HDMI infoframe
412 * Packs the information contained in the @frame structure into a binary
421 hdmi_infoframe_pack(union hdmi_infoframe *frame, void *buffer, size_t size)
425 switch (frame->any.type) {
427 length = hdmi_avi_infoframe_pack(&frame->avi, buffer, size);
430 length = hdmi_spd_infoframe_pack(&frame->spd, buffer, size);
433 length = hdmi_audio_infoframe_pack(&frame->audio, buffer, size);
436 length = hdmi_vendor_any_infoframe_pack(&frame->vendor,
440 printf("Bad infoframe type %d\n", frame->any.type);
465 static void hdmi_infoframe_log_header(struct hdmi_any_infoframe *frame)
468 hdmi_infoframe_type_get_name(frame->type),
469 frame->version, frame->length);
659 * @frame: HDMI AVI infoframe
661 static void hdmi_avi_infoframe_log(struct hdmi_avi_infoframe *frame)
663 hdmi_infoframe_log_header((struct hdmi_any_infoframe *)frame);
666 hdmi_colorspace_get_name(frame->colorspace));
668 hdmi_scan_mode_get_name(frame->scan_mode));
670 hdmi_colorimetry_get_name(frame->colorimetry));
672 hdmi_picture_aspect_get_name(frame->picture_aspect));
674 hdmi_active_aspect_get_name(frame->active_aspect));
675 hdmi_log(" itc: %s\n", frame->itc ? "IT Content" : "No Data");
677 hdmi_extended_colorimetry_get_name(frame->extended_colorimetry));
679 hdmi_quantization_range_get_name(frame->quantization_range));
680 hdmi_log(" nups: %s\n", hdmi_nups_get_name(frame->nups));
681 hdmi_log(" video code: %u\n", frame->video_code);
683 hdmi_ycc_quantization_range_get_name(frame->ycc_quantization_range));
685 hdmi_content_type_get_name(frame->content_type));
686 hdmi_log(" pixel repeat: %u\n", frame->pixel_repeat);
688 frame->top_bar, frame->bottom_bar,
689 frame->left_bar, frame->right_bar);
732 * @frame: HDMI SPD infoframe
734 static void hdmi_spd_infoframe_log(struct hdmi_spd_infoframe *frame)
738 hdmi_infoframe_log_header((struct hdmi_any_infoframe *)frame);
742 strncpy(buf, frame->vendor, 8);
744 strncpy(buf, frame->product, 16);
747 hdmi_spd_sdi_get_name(frame->sdi), frame->sdi);
863 * @frame: HDMI AUDIO infoframe
865 static void hdmi_audio_infoframe_log(struct hdmi_audio_infoframe *frame)
867 hdmi_infoframe_log_header((struct hdmi_any_infoframe *)frame);
869 if (frame->channels)
870 hdmi_log(" channels: %u\n", frame->channels - 1);
874 hdmi_audio_coding_type_get_name(frame->coding_type));
876 hdmi_audio_sample_size_get_name(frame->sample_size));
878 hdmi_audio_sample_frequency_get_name(frame->sample_frequency));
880 hdmi_audio_coding_type_ext_get_name(frame->coding_type_ext));
882 frame->channel_allocation);
884 frame->level_shift_value);
886 frame->downmix_inhibit ? "Yes" : "No");
922 * @frame: HDMI VENDOR infoframe
925 hdmi_vendor_any_infoframe_log(union hdmi_vendor_any_infoframe *frame)
927 struct hdmi_vendor_infoframe *hvf = &frame->hdmi;
929 hdmi_infoframe_log_header((struct hdmi_any_infoframe *)frame);
931 if (frame->any.oui != HDMI_IEEE_OUI) {
936 hdmi_log(" empty frame\n");
955 * @frame: HDMI infoframe
957 void hdmi_infoframe_log(union hdmi_infoframe *frame)
959 switch (frame->any.type) {
961 hdmi_avi_infoframe_log(&frame->avi);
964 hdmi_spd_infoframe_log(&frame->spd);
967 hdmi_audio_infoframe_log(&frame->audio);
970 hdmi_vendor_any_infoframe_log(&frame->vendor);
979 * @frame: HDMI AVI infoframe
982 * @frame of the HDMI Auxiliary Video (AVI) information frame.
988 static int hdmi_avi_infoframe_unpack(struct hdmi_avi_infoframe *frame,
1002 ret = hdmi_avi_infoframe_init(frame);
1008 frame->colorspace = (ptr[0] >> 5) & 0x3;
1010 frame->active_aspect = ptr[1] & 0xf;
1012 frame->top_bar = (ptr[5] << 8) + ptr[6];
1013 frame->bottom_bar = (ptr[7] << 8) + ptr[8];
1016 frame->left_bar = (ptr[9] << 8) + ptr[10];
1017 frame->right_bar = (ptr[11] << 8) + ptr[12];
1019 frame->scan_mode = ptr[0] & 0x3;
1021 frame->colorimetry = (ptr[1] >> 6) & 0x3;
1022 frame->picture_aspect = (ptr[1] >> 4) & 0x3;
1023 frame->active_aspect = ptr[1] & 0xf;
1025 frame->itc = ptr[2] & 0x80 ? true : false;
1026 frame->extended_colorimetry = (ptr[2] >> 4) & 0x7;
1027 frame->quantization_range = (ptr[2] >> 2) & 0x3;
1028 frame->nups = ptr[2] & 0x3;
1030 frame->video_code = ptr[3] & 0x7f;
1031 frame->ycc_quantization_range = (ptr[4] >> 6) & 0x3;
1032 frame->content_type = (ptr[4] >> 4) & 0x3;
1034 frame->pixel_repeat = ptr[4] & 0xf;
1042 * @frame: HDMI SPD infoframe
1045 * @frame of the HDMI Source Product Description (SPD) information frame.
1051 static int hdmi_spd_infoframe_unpack(struct hdmi_spd_infoframe *frame,
1068 ret = hdmi_spd_infoframe_init(frame, ptr, ptr + 8);
1072 frame->sdi = ptr[24];
1080 * @frame: HDMI Audio infoframe
1083 * @frame of the HDMI Audio information frame.
1089 static int hdmi_audio_infoframe_unpack(struct hdmi_audio_infoframe *frame,
1104 ret = hdmi_audio_infoframe_init(frame);
1110 frame->channels = ptr[0] & 0x7;
1111 frame->coding_type = (ptr[0] >> 4) & 0xf;
1112 frame->sample_size = ptr[1] & 0x3;
1113 frame->sample_frequency = (ptr[1] >> 2) & 0x7;
1114 frame->coding_type_ext = ptr[2] & 0x1f;
1115 frame->channel_allocation = ptr[3];
1116 frame->level_shift_value = (ptr[4] >> 3) & 0xf;
1117 frame->downmix_inhibit = ptr[4] & 0x80 ? true : false;
1125 * @frame: HDMI Vendor infoframe
1128 * @frame of the HDMI Vendor information frame.
1135 hdmi_vendor_any_infoframe_unpack(union hdmi_vendor_any_infoframe *frame,
1142 struct hdmi_vendor_infoframe *hvf = &frame->hdmi;
1192 * @frame: HDMI infoframe
1195 * @frame of a HDMI infoframe.
1201 int hdmi_infoframe_unpack(union hdmi_infoframe *frame, void *buffer)
1208 ret = hdmi_avi_infoframe_unpack(&frame->avi, buffer);
1211 ret = hdmi_spd_infoframe_unpack(&frame->spd, buffer);
1214 ret = hdmi_audio_infoframe_unpack(&frame->audio, buffer);
1217 ret = hdmi_vendor_any_infoframe_unpack(&frame->vendor, buffer);