Lines Matching refs:pb

135 static void gxf_write_padding(AVIOContext *pb, int64_t to_pad)
137 ffio_fill(pb, 0, to_pad);
140 static int64_t updatePacketSize(AVIOContext *pb, int64_t pos)
145 size = avio_tell(pb) - pos;
147 gxf_write_padding(pb, 4 - size % 4);
148 size = avio_tell(pb) - pos;
150 curpos = avio_tell(pb);
151 avio_seek(pb, pos + 6, SEEK_SET);
152 avio_wb32(pb, size);
153 avio_seek(pb, curpos, SEEK_SET);
157 static int64_t updateSize(AVIOContext *pb, int64_t pos)
161 curpos = avio_tell(pb);
162 avio_seek(pb, pos, SEEK_SET);
163 avio_wb16(pb, curpos - pos - 2);
164 avio_seek(pb, curpos, SEEK_SET);
168 static void gxf_write_packet_header(AVIOContext *pb, GXFPktType type)
170 avio_wb32(pb, 0); /* packet leader for synchro */
171 avio_w8(pb, 1);
172 avio_w8(pb, type); /* map packet */
173 avio_wb32(pb, 0); /* size */
174 avio_wb32(pb, 0); /* reserved */
175 avio_w8(pb, 0xE1); /* trailer 1 */
176 avio_w8(pb, 0xE2); /* trailer 2 */
179 static int gxf_write_mpeg_auxiliary(AVIOContext *pb, AVStream *st)
212 avio_w8(pb, TRACK_MPG_AUX);
213 avio_w8(pb, size + 1);
214 avio_write(pb, (uint8_t *)buffer, size + 1);
218 static int gxf_write_dv_auxiliary(AVIOContext *pb, AVStream *st)
222 avio_w8(pb, TRACK_AUX);
223 avio_w8(pb, 8);
227 avio_wl64(pb, track_aux_data);
231 static int gxf_write_timecode_auxiliary(AVIOContext *pb, GXFContext *gxf)
237 avio_w8(pb, TRACK_AUX);
238 avio_w8(pb, 8);
239 avio_wl32(pb, timecode);
241 avio_wl32(pb, 0);
248 AVIOContext *pb = s->pb;
252 avio_w8(pb, sc->media_type + 0x80);
253 avio_w8(pb, index + 0xC0);
255 pos = avio_tell(pb);
256 avio_wb16(pb, 0); /* size */
259 avio_w8(pb, TRACK_NAME);
260 avio_w8(pb, strlen(ES_NAME_PATTERN) + 3);
261 avio_write(pb, ES_NAME_PATTERN, sizeof(ES_NAME_PATTERN) - 1);
262 avio_wb16(pb, sc->media_info);
263 avio_w8(pb, 0);
267 gxf_write_timecode_auxiliary(pb, gxf);
271 gxf_write_mpeg_auxiliary(pb, s->streams[index]);
275 gxf_write_dv_auxiliary(pb, s->streams[index]);
278 avio_w8(pb, TRACK_AUX);
279 avio_w8(pb, 8);
280 avio_wl64(pb, 0);
284 avio_w8(pb, TRACK_VER);
285 avio_w8(pb, 4);
286 avio_wb32(pb, 0);
289 avio_w8(pb, TRACK_FPS);
290 avio_w8(pb, 4);
291 avio_wb32(pb, sc->frame_rate_index);
294 avio_w8(pb, TRACK_LINES);
295 avio_w8(pb, 4);
296 avio_wb32(pb, sc->lines_index);
299 avio_w8(pb, TRACK_FPF);
300 avio_w8(pb, 4);
301 avio_wb32(pb, sc->fields);
303 return updateSize(pb, pos);
309 AVIOContext *pb = s->pb;
314 pos = avio_tell(pb);
315 avio_wb16(pb, 0); /* size */
324 avio_w8(pb, MAT_NAME);
325 avio_w8(pb, strlen(SERVER_PATH) + len + 1);
326 avio_write(pb, SERVER_PATH, sizeof(SERVER_PATH) - 1);
327 avio_write(pb, filename, len);
328 avio_w8(pb, 0);
331 avio_w8(pb, MAT_FIRST_FIELD);
332 avio_w8(pb, 4);
333 avio_wb32(pb, 0);
336 avio_w8(pb, MAT_LAST_FIELD);
337 avio_w8(pb, 4);
338 avio_wb32(pb, gxf->nb_fields);
341 avio_w8(pb, MAT_MARK_IN);
342 avio_w8(pb, 4);
343 avio_wb32(pb, 0);
345 avio_w8(pb, MAT_MARK_OUT);
346 avio_w8(pb, 4);
347 avio_wb32(pb, gxf->nb_fields);
350 avio_w8(pb, MAT_SIZE);
351 avio_w8(pb, 4);
352 avio_wb32(pb, avio_size(pb) / 1024);
354 return updateSize(pb, pos);
360 AVIOContext *pb = s->pb;
364 pos = avio_tell(pb);
365 avio_wb16(pb, 0); /* size */
371 return updateSize(pb, pos);
377 AVIOContext *pb = s->pb;
378 int64_t pos = avio_tell(pb);
394 gxf_write_packet_header(pb, PKT_MAP);
397 avio_w8(pb, 0xE0); /* version */
398 avio_w8(pb, 0xFF); /* reserved */
403 return updatePacketSize(pb, pos);
409 AVIOContext *pb = s->pb;
410 int64_t pos = avio_tell(pb);
415 gxf_write_packet_header(pb, PKT_FLT);
417 avio_wl32(pb, fields_per_flt); /* number of fields */
418 avio_wl32(pb, flt_entries); /* number of active flt entries */
422 avio_wl32(pb, gxf->flt_entries[(i*fields_per_flt)>>1]);
425 ffio_fill(pb, 0, (1000 - i) * 4);
427 return updatePacketSize(pb, pos);
433 AVIOContext *pb = s->pb;
458 avio_wl32(pb, gxf->flags);
459 avio_wl32(pb, gxf->nb_fields); /* length of the longest track */
460 avio_wl32(pb, gxf->nb_fields); /* length of the shortest track */
461 avio_wl32(pb, 0); /* mark in */
462 avio_wl32(pb, gxf->nb_fields); /* mark out */
463 avio_wl32(pb, timecode_in); /* timecode mark in */
464 avio_wl32(pb, timecode_out); /* timecode mark out */
465 avio_wl64(pb, timestamp); /* modification time */
466 avio_wl64(pb, timestamp); /* creation time */
467 avio_wl16(pb, 0); /* reserved */
468 avio_wl16(pb, 0); /* reserved */
469 avio_wl16(pb, gxf->audio_tracks);
470 avio_wl16(pb, 1); /* timecode track count */
471 avio_wl16(pb, 0); /* reserved */
472 avio_wl16(pb, gxf->mpeg_tracks);
479 AVIOContext *pb = s->pb;
481 avio_wl32(pb, gxf->umf_length); /* total length of the umf data */
482 avio_wl32(pb, 3); /* version */
483 avio_wl32(pb, s->nb_streams+1);
484 avio_wl32(pb, gxf->umf_track_offset); /* umf track section offset */
485 avio_wl32(pb, gxf->umf_track_size);
486 avio_wl32(pb, s->nb_streams+1);
487 avio_wl32(pb, gxf->umf_media_offset);
488 avio_wl32(pb, gxf->umf_media_size);
489 avio_wl32(pb, gxf->umf_length); /* user data offset */
490 avio_wl32(pb, 0); /* user data size */
491 avio_wl32(pb, 0); /* reserved */
492 avio_wl32(pb, 0); /* reserved */
498 AVIOContext *pb = s->pb;
500 int64_t pos = avio_tell(pb);
506 avio_wl16(pb, sc->media_info);
507 avio_wl16(pb, 1);
510 avio_wl16(pb, gxf->timecode_track.media_info);
511 avio_wl16(pb, 1);
513 return avio_tell(pb) - pos;
516 static int gxf_write_umf_media_mpeg(AVIOContext *pb, AVStream *st)
521 avio_wl32(pb, 2);
523 avio_wl32(pb, 1); /* default to 420 */
524 avio_wl32(pb, sc->first_gop_closed == 1); /* closed = 1, open = 0, unknown = 255 */
525 avio_wl32(pb, 3); /* top = 1, bottom = 2, frame = 3, unknown = 0 */
526 avio_wl32(pb, 1); /* I picture per GOP */
527 avio_wl32(pb, sc->p_per_gop);
528 avio_wl32(pb, sc->b_per_i_or_p);
530 avio_wl32(pb, 2);
532 avio_wl32(pb, 1);
534 avio_wl32(pb, 0);
535 avio_wl32(pb, 0); /* reserved */
539 static int gxf_write_umf_media_timecode(AVIOContext *pb, int drop)
541 avio_wl32(pb, drop); /* drop frame */
542 ffio_fill(pb, 0, 7 * 4); /* reserved */
546 static int gxf_write_umf_media_dv(AVIOContext *pb, GXFStreamContext *sc, AVStream *st)
552 avio_wl32(pb, dv_umf_data);
553 ffio_fill(pb, 0, 7 * 4);
557 static int gxf_write_umf_media_audio(AVIOContext *pb, GXFStreamContext *sc)
559 avio_wl64(pb, av_double2int(1)); /* sound level to begin to */
560 avio_wl64(pb, av_double2int(1)); /* sound level to begin to */
561 avio_wl32(pb, 0); /* number of fields over which to ramp up sound level */
562 avio_wl32(pb, 0); /* number of fields over which to ramp down sound level */
563 avio_wl32(pb, 0); /* reserved */
564 avio_wl32(pb, 0); /* reserved */
571 AVIOContext *pb = s->pb;
574 pos = avio_tell(pb);
585 startpos = avio_tell(pb);
586 avio_wl16(pb, 0); /* length */
587 avio_wl16(pb, sc->media_info);
588 avio_wl16(pb, 0); /* reserved */
589 avio_wl16(pb, 0); /* reserved */
590 avio_wl32(pb, gxf->nb_fields);
591 avio_wl32(pb, 0); /* attributes rw, ro */
592 avio_wl32(pb, 0); /* mark in */
593 avio_wl32(pb, gxf->nb_fields); /* mark out */
594 avio_write(pb, ES_NAME_PATTERN, strlen(ES_NAME_PATTERN));
595 avio_wb16(pb, sc->media_info);
596 ffio_fill(pb, 0, 88 - (strlen(ES_NAME_PATTERN) + 2));
597 avio_wl32(pb, sc->track_type);
598 avio_wl32(pb, sc->sample_rate);
599 avio_wl32(pb, sc->sample_size);
600 avio_wl32(pb, 0); /* reserved */
603 gxf_write_umf_media_timecode(pb, gxf->tc.drop);
609 gxf_write_umf_media_mpeg(pb, st);
612 gxf_write_umf_media_audio(pb, sc);
615 gxf_write_umf_media_dv(pb, sc, st);
620 curpos = avio_tell(pb);
621 avio_seek(pb, startpos, SEEK_SET);
622 avio_wl16(pb, curpos - startpos);
623 avio_seek(pb, curpos, SEEK_SET);
625 return avio_tell(pb) - pos;
631 AVIOContext *pb = s->pb;
632 int64_t pos = avio_tell(pb);
634 gxf_write_packet_header(pb, PKT_UMF);
637 avio_w8(pb, 3); /* first and last (only) packet */
638 avio_wb32(pb, gxf->umf_length); /* data length */
640 gxf->umf_start_offset = avio_tell(pb);
645 gxf->umf_length = avio_tell(pb) - gxf->umf_start_offset;
646 return updatePacketSize(pb, pos);
685 AVIOContext *pb = s->pb;
693 if (!(pb->seekable & AVIO_SEEKABLE_NORMAL)) {
821 static int gxf_write_eos_packet(AVIOContext *pb)
823 int64_t pos = avio_tell(pb);
825 gxf_write_packet_header(pb, PKT_EOS);
826 return updatePacketSize(pb, pos);
832 AVIOContext *pb = s->pb;
837 gxf_write_eos_packet(pb);
838 end = avio_tell(pb);
839 avio_seek(pb, 0, SEEK_SET);
847 avio_seek(pb, gxf->map_offsets[i], SEEK_SET);
852 avio_seek(pb, end, SEEK_SET);
880 AVIOContext *pb = s->pb;
894 avio_w8(pb, sc->media_type);
895 avio_w8(pb, st->index);
896 avio_wb32(pb, field_nb);
898 avio_wb16(pb, 0);
899 avio_wb16(pb, size / 2);
903 avio_w8(pb, 0x0d);
906 avio_w8(pb, 0x0f);
909 avio_w8(pb, 0x0e);
912 avio_wb24(pb, size);
914 avio_w8(pb, size / 4096);
915 avio_wb24(pb, 0);
917 avio_wb32(pb, size);
918 avio_wb32(pb, field_nb);
919 avio_w8(pb, 1); /* flags */
920 avio_w8(pb, 0); /* reserved */
927 AVIOContext *pb = s->pb;
929 int64_t pos = avio_tell(pb);
931 unsigned packet_start_offset = avio_tell(pb) / 1024;
934 gxf_write_packet_header(pb, PKT_MEDIA);
940 avio_write(pb, pkt->data, pkt->size);
941 gxf_write_padding(pb, padding);
959 updatePacketSize(pb, pos);