Lines Matching refs:pb
59 static void end_tag_be(AVIOContext *pb, int64_t start)
63 pos = avio_tell(pb);
64 avio_seek(pb, start - 4, SEEK_SET);
65 avio_wb32(pb, (uint32_t)(pos - start));
66 avio_seek(pb, pos, SEEK_SET);
72 AVIOContext *pb = s->pb;
95 ffio_wfourcc(pb, "MMMD");
96 avio_wb32(pb, 0);
97 pos = ff_start_tag(pb, "CNTI");
98 avio_w8(pb, 0); /* class */
99 avio_w8(pb, 1); /* type */
100 avio_w8(pb, 1); /* code type */
101 avio_w8(pb, 0); /* status */
102 avio_w8(pb, 0); /* counts */
103 end_tag_be(pb, pos);
105 pos = ff_start_tag(pb, "OPDA");
106 avio_write(pb, version, strlen(version)); /* metadata ("ST:songtitle,VN:version,...") */
107 end_tag_be(pb, pos);
109 avio_write(pb, "ATR\x00", 4);
110 avio_wb32(pb, 0);
111 mmf->atrpos = avio_tell(pb);
112 avio_w8(pb, 0); /* format type */
113 avio_w8(pb, 0); /* sequence type */
114 avio_w8(pb, (mmf->stereo << 7) | (1 << 4) | rate); /* (channel << 7) | (format << 4) | rate */
115 avio_w8(pb, 0); /* wave base bit */
116 avio_w8(pb, 2); /* time base d */
117 avio_w8(pb, 2); /* time base g */
119 ffio_wfourcc(pb, "Atsq");
120 avio_wb32(pb, 16);
121 mmf->atsqpos = avio_tell(pb);
123 avio_write(pb, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 16);
125 mmf->awapos = ff_start_tag(pb, "Awa\x01");
133 static void put_varlength(AVIOContext *pb, int val)
136 avio_w8(pb, val);
139 avio_w8(pb, 0x80 | val >> 7);
140 avio_w8(pb, 0x7f & val);
146 AVIOContext *pb = s->pb;
151 if (s->pb->seekable & AVIO_SEEKABLE_NORMAL) {
153 end_tag_be(pb, mmf->awapos);
154 end_tag_be(pb, mmf->atrpos);
155 end_tag_be(pb, 8);
157 pos = avio_tell(pb);
161 avio_seek(pb, mmf->atsqpos, SEEK_SET);
164 avio_w8(pb, 0); /* start time */
165 avio_w8(pb, (mmf->stereo << 6) | 1); /* (channel << 6) | wavenum */
167 put_varlength(pb, gatetime); /* duration */
170 put_varlength(pb, gatetime); /* start time */
171 avio_write(pb, "\xff\x00", 2); /* nop */
174 avio_write(pb, "\x00\x00\x00\x00", 4);
176 avio_seek(pb, pos, SEEK_SET);
199 AVIOContext *pb = s->pb;
204 tag = avio_rl32(pb);
207 avio_skip(pb, 4); /* file_size */
210 for (;; avio_skip(pb, size)) {
211 tag = avio_rl32(pb);
212 size = avio_rb32(pb);
230 avio_r8(pb); /* format type */
231 avio_r8(pb); /* sequence type */
232 params = avio_r8(pb); /* (channel << 7) | (format << 4) | rate */
238 avio_r8(pb); /* wave base bit */
239 avio_r8(pb); /* time base d */
240 avio_r8(pb); /* time base g */
243 for (;; avio_skip(pb, size)) {
244 tag = avio_rl32(pb);
245 size = avio_rb32(pb);
258 mmf->data_end = avio_tell(pb) + size;
285 left = mmf->data_end - avio_tell(s->pb);
287 if (avio_feof(s->pb) || size <= 0)
290 ret = av_get_packet(s->pb, pkt, size);