Lines Matching refs:pb
123 typedef int WTVHeaderWriteFunc(AVIOContext *pb);
131 #define write_pad(pb, size) ffio_fill(pb, 0, size)
139 AVIOContext *pb = s->pb;
141 wctx->last_chunk_pos = avio_tell(pb) - wctx->timeline_start_pos;
142 ff_put_guid(pb, guid);
143 avio_wl32(pb, 32 + length);
144 avio_wl32(pb, stream_id);
145 avio_wl64(pb, wctx->serial);
161 AVIOContext *pb = s->pb;
165 avio_wl64(pb, last_chunk_pos);
171 AVIOContext *pb = s->pb;
174 int64_t chunk_len = avio_tell(pb) - (wctx->last_chunk_pos + wctx->timeline_start_pos);
175 avio_seek(pb, -(chunk_len - 16), SEEK_CUR);
176 avio_wl32(pb, chunk_len);
177 avio_seek(pb, chunk_len - (16 + 4), SEEK_CUR);
179 write_pad(pb, WTV_PAD8(chunk_len) - chunk_len);
185 AVIOContext *pb = s->pb;
190 avio_wl32(pb, 0);
191 avio_wl32(pb, 0);
195 ff_put_guid(pb, t->guid);
196 avio_wl64(pb, t->pos);
197 avio_wl32(pb, t->stream_id);
198 avio_wl32(pb, 0); // checksum?
199 avio_wl64(pb, t->serial);
216 static void put_videoinfoheader2(AVIOContext *pb, AVStream *st)
223 avio_wl32(pb, 0);
224 avio_wl32(pb, 0);
225 avio_wl32(pb, st->codecpar->width);
226 avio_wl32(pb, st->codecpar->height);
228 avio_wl32(pb, 0);
229 avio_wl32(pb, 0);
230 avio_wl32(pb, 0);
231 avio_wl32(pb, 0);
233 avio_wl32(pb, st->codecpar->bit_rate);
234 avio_wl32(pb, 0);
235 avio_wl64(pb, st->avg_frame_rate.num && st->avg_frame_rate.den ? INT64_C(10000000) / av_q2d(st->avg_frame_rate) : 0);
236 avio_wl32(pb, 0);
237 avio_wl32(pb, 0);
239 avio_wl32(pb, num);
240 avio_wl32(pb, den);
241 avio_wl32(pb, 0);
242 avio_wl32(pb, 0);
244 ff_put_bmp_header(pb, st->codecpar, 0, 1, 0);
249 avio_wl32(pb, 0);
250 avio_wl32(pb, st->codecpar->extradata_size + padding);
251 avio_wl32(pb, -1);
252 avio_wl32(pb, -1);
253 avio_wl32(pb, 0);
254 avio_write(pb, st->codecpar->extradata, st->codecpar->extradata_size);
255 ffio_fill(pb, 0, padding);
263 AVIOContext *pb = s->pb;
282 ff_put_guid(pb, media_type); // mediatype
283 ff_put_guid(pb, &ff_mediasubtype_cpfilters_processed); // subtype
284 write_pad(pb, 12);
285 ff_put_guid(pb,&ff_format_cpfilters_processed); // format type
286 avio_wl32(pb, 0); // size
288 hdr_pos_start = avio_tell(pb);
290 put_videoinfoheader2(pb, st);
292 if (ff_put_wav_header(s, pb, st->codecpar, 0) < 0)
295 hdr_size = avio_tell(pb) - hdr_pos_start;
298 avio_seek(pb, -(hdr_size + 4), SEEK_CUR);
299 avio_wl32(pb, hdr_size + 32);
300 avio_seek(pb, hdr_size, SEEK_CUR);
302 ff_put_guid(pb, g); // actual_subtype
309 avio_wl32(pb, tag);
310 avio_write(pb, (const uint8_t[]){FF_MEDIASUBTYPE_BASE_GUID}, 12);
312 ff_put_guid(pb, format_type); // actual_formattype
319 AVIOContext *pb = s->pb;
323 avio_wl32(pb, 0x01);
324 write_pad(pb, 4);
325 write_pad(pb, 4);
339 AVIOContext *pb = s->pb;
344 avio_wl64(pb, wctx->first_index_pos);
345 avio_wl64(pb, wctx->last_timestamp_pos);
346 avio_wl64(pb, 0);
356 AVIOContext *pb = s->pb;
360 avio_wl32(pb, 0x00000001);
361 avio_wl32(pb, st->index + INDEX_BASE); //stream_id
362 avio_wl32(pb, 0x00000001);
363 write_pad(pb, 8);
379 AVIOContext *pb = s->pb;
387 ff_put_guid(pb, &ff_wtv_guid);
388 ff_put_guid(pb, &sub_wtv_guid);
390 avio_wl32(pb, 0x01);
391 avio_wl32(pb, 0x02);
392 avio_wl32(pb, 1 << WTV_SECTOR_BITS);
393 avio_wl32(pb, 1 << WTV_BIGSECTOR_BITS);
396 avio_wl32(pb, 0); // root_size, update later
397 write_pad(pb, 4);
398 avio_wl32(pb, 0); // root_sector, update it later.
400 write_pad(pb, 32);
401 avio_wl32(pb, 0); // file ends pointer, update it later.
403 pad = (1 << WTV_SECTOR_BITS) - avio_tell(pb);
404 write_pad(pb, pad);
406 wctx->timeline_start_pos = avio_tell(pb);
444 AVIOContext *pb = s->pb;
449 write_pad(pb, 8);
450 avio_wl64(pb, pkt->pts == AV_NOPTS_VALUE ? -1 : pkt->pts);
451 avio_wl64(pb, pkt->pts == AV_NOPTS_VALUE ? -1 : pkt->pts);
452 avio_wl64(pb, pkt->pts == AV_NOPTS_VALUE ? -1 : pkt->pts);
453 avio_wl64(pb, 0);
454 avio_wl64(pb, par->codec_type == AVMEDIA_TYPE_VIDEO && (pkt->flags & AV_PKT_FLAG_KEY) ? 1 : 0);
455 avio_wl64(pb, 0);
462 AVIOContext *pb = s->pb;
492 avio_write(pb, pkt->data, pkt->size);
493 write_pad(pb, WTV_PAD8(pkt->size) - pkt->size);
499 static int write_table0_header_events(AVIOContext *pb)
501 avio_wl32(pb, 0x10);
502 write_pad(pb, 84);
503 avio_wl64(pb, 0x32);
507 static int write_table0_header_legacy_attrib(AVIOContext *pb)
510 avio_wl32(pb, 0xFFFFFFFF);
511 write_pad(pb, 12);
512 avio_write(pb, legacy_attrib, sizeof(legacy_attrib));
514 write_pad(pb, pad);
515 write_pad(pb, 32);
519 static int write_table0_header_time(AVIOContext *pb)
521 avio_wl32(pb, 0x10);
522 write_pad(pb, 76);
523 avio_wl64(pb, 0x40);
540 AVIOContext *pb = s->pb;
553 ff_put_guid(pb, &ff_dir_entry_guid);
554 len_pos = avio_tell(pb);
555 avio_wl16(pb, 40 + h->header_size + filename_padding + 8); // maybe updated later
556 write_pad(pb, 6);
557 avio_wl64(pb, write ? 0 : w->length);// maybe update later
558 avio_wl32(pb, (h->header_size + filename_padding) >> 1);
559 write_pad(pb, 4);
561 avio_write(pb, h->header, h->header_size);
562 write_pad(pb, filename_padding);
565 len = write(pb);
567 avio_seek(pb, len_pos, SEEK_SET);
568 avio_wl64(pb, 40 + h->header_size + filename_padding + len);
569 avio_wl64(pb, len |(1ULL<<62) | (1ULL<<60));
570 avio_seek(pb, 8 + h->header_size + filename_padding + len, SEEK_CUR);
572 avio_wl32(pb, w->first_sector);
573 avio_wl32(pb, w->depth);
578 size = avio_tell(pb) - sector_pos;
580 write_pad(pb, pad);
585 static void write_fat(AVIOContext *pb, int start_sector, int nb_sectors, int shift)
589 avio_wl32(pb, start_sector + (i << shift));
592 write_pad(pb, WTV_SECTOR_SIZE - ((nb_sectors << 2) % WTV_SECTOR_SIZE));
600 int64_t fat = avio_tell(s->pb);
601 write_fat(s->pb, start_sector, nb_sectors, shift);
606 int64_t fat1 = avio_tell(s->pb);
608 write_fat(s->pb, start_sector1, nb_sectors1, 0);
617 AVIOContext *pb = s->pb;
621 avio_wl64(pb, wctx->sp_pairs[i].serial);
622 avio_wl64(pb, wctx->sp_pairs[i].value);
628 AVIOContext *pb = s->pb;
632 avio_wl64(pb, wctx->st_pairs[i].value);
633 avio_wl64(pb, wctx->st_pairs[i].serial);
635 avio_wl64(pb, wctx->last_pts);
636 avio_wl64(pb, wctx->last_serial);
639 static void write_metadata_header(AVIOContext *pb, int type, const char *key, int value_size)
641 ff_put_guid(pb, &ff_metadata_guid);
642 avio_wl32(pb, type);
643 avio_wl32(pb, value_size);
644 avio_put_str16le(pb, key);
652 static void write_tag_int32(AVIOContext *pb, const char *key, int value)
654 write_metadata_header(pb, 0, key, 4);
655 avio_wl32(pb, value);
658 static void write_tag(AVIOContext *pb, const char *key, const char *value)
660 write_metadata_header(pb, 1, key, strlen(value)*2 + 2);
661 avio_put_str16le(pb, value);
672 AVIOContext *pb = s->pb;
679 write_tag(pb, tag->key, tag->value);
684 write_metadata_header(pb, 2, "WM/Picture", attachment_value_size(&wctx->thumbnail, tag));
686 avio_put_str16le(pb, "image/jpeg");
687 avio_w8(pb, 0x10);
688 avio_put_str16le(pb, tag ? tag->value : "");
690 avio_wl32(pb, wctx->thumbnail.size);
691 avio_write(pb, wctx->thumbnail.data, wctx->thumbnail.size);
693 write_tag_int32(pb, "WM/MediaThumbType", 2);
700 AVIOContext *pb = s->pb;
706 avio_wl64(pb, pos);
712 avio_wl64(pb, pos);
715 avio_wl64(pb, pos);
728 AVIOContext *pb = s->pb;
730 int64_t end_pos = avio_tell(pb);
765 write_pad(pb, pad);
785 AVIOContext *pb = s->pb;
793 start_pos = avio_tell(pb);
798 start_pos = avio_tell(pb);
803 start_pos = avio_tell(pb);
808 start_pos = avio_tell(pb);
814 sector_pos = avio_tell(pb);
817 file_end_pos = avio_tell(pb);
819 avio_seek(pb, 0x30, SEEK_SET);
820 avio_wl32(pb, root_size);
821 avio_seek(pb, 4, SEEK_CUR);
822 avio_wl32(pb, sector_pos >> WTV_SECTOR_BITS);
823 avio_seek(pb, 0x5c, SEEK_SET);
824 avio_wl32(pb, file_end_pos >> WTV_SECTOR_BITS);