static int sami_probe(AVProbeData *p)
{
- const unsigned char *ptr = p->buf;
+ char buf[6];
+ FFTextReader tr;
+ ff_text_init_buf(&tr, p->buf, p->buf_size);
+ ff_text_read(&tr, buf, sizeof(buf));
- if (AV_RB24(ptr) == 0xEFBBBF)
- ptr += 3; /* skip UTF-8 BOM */
- return !strncmp(ptr, "<SAMI>", 6) ? AVPROBE_SCORE_MAX : 0;
+ return !strncmp(buf, "<SAMI>", 6) ? AVPROBE_SCORE_MAX : 0;
}
static int sami_read_header(AVFormatContext *s)
AVBPrint buf, hdr_buf;
char c = 0;
int res = 0, got_first_sync_point = 0;
+ FFTextReader tr;
+ ff_text_init_avio(&tr, s->pb);
if (!st)
return AVERROR(ENOMEM);
av_bprint_init(&buf, 0, AV_BPRINT_SIZE_UNLIMITED);
av_bprint_init(&hdr_buf, 0, AV_BPRINT_SIZE_UNLIMITED);
- while (!url_feof(s->pb)) {
+ while (!ff_text_eof(&tr)) {
AVPacket *sub;
- const int64_t pos = avio_tell(s->pb) - (c != 0);
- int is_sync, n = ff_smil_extract_next_chunk(s->pb, &buf, &c);
+ const int64_t pos = ff_text_pos(&tr) - (c != 0);
+ int is_sync, n = ff_smil_extract_next_text_chunk(&tr, &buf, &c);
if (n == 0)
break;