Lines Matching refs:os

80     OutputStream *os = opaque;
81 if (os->out)
82 ffurl_write(os->out, buf, buf_size);
83 if (os->out2)
84 ffurl_write(os->out2, buf, buf_size);
85 os->cur_pos += buf_size;
86 if (os->cur_pos >= os->tail_pos)
87 os->tail_pos = os->cur_pos;
93 OutputStream *os = opaque;
97 if (os->tail_out) {
98 ffurl_closep(&os->out);
99 ffurl_closep(&os->out2);
100 os->out = os->tail_out;
101 os->tail_out = NULL;
103 if (offset >= os->cur_start_pos) {
104 if (os->out)
105 ffurl_seek(os->out, offset - os->cur_start_pos, SEEK_SET);
106 os->cur_pos = offset;
109 for (i = os->nb_fragments - 1; i >= 0; i--) {
110 Fragment *frag = os->fragments[i];
114 os->tail_out = os->out;
116 ret = ffurl_open_whitelist(&os->out, frag->file, AVIO_FLAG_WRITE,
117 &os->ctx->interrupt_callback, &opts, os->ctx->protocol_whitelist, os->ctx->protocol_blacklist, NULL);
120 os->out = os->tail_out;
121 os->tail_out = NULL;
125 ffurl_open_whitelist(&os->out2, frag->infofile, AVIO_FLAG_WRITE,
126 &os->ctx->interrupt_callback, &opts, os->ctx->protocol_whitelist, os->ctx->protocol_blacklist, NULL);
128 ffurl_seek(os->out, offset - frag->start_pos, SEEK_SET);
129 if (os->out2)
130 ffurl_seek(os->out2, offset - frag->start_pos, SEEK_SET);
131 os->cur_pos = offset;
138 static void get_private_data(OutputStream *os)
140 AVCodecParameters *par = os->ctx->streams[0]->codecpar;
151 os->private_str = av_mallocz(2*size + 1);
152 if (!os->private_str)
155 snprintf(&os->private_str[2*i], 3, "%02x", ptr[i]);
168 OutputStream *os = &c->streams[i];
169 ffurl_closep(&os->out);
170 ffurl_closep(&os->out2);
171 ffurl_closep(&os->tail_out);
172 if (os->ctx && os->ctx->pb)
173 avio_context_free(&os->ctx->pb);
174 avformat_free_context(os->ctx);
175 av_freep(&os->private_str);
176 for (j = 0; j < os->nb_fragments; j++)
177 av_freep(&os->fragments[j]);
178 av_freep(&os->fragments);
183 static void output_chunk_list(OutputStream *os, AVIOContext *out, int final, int skip, int window_size)
186 if (os->nb_fragments <= 0)
188 if (os->fragments[0]->n > 0)
193 start = FFMAX(os->nb_fragments - skip - window_size, 0);
194 for (i = start; i < os->nb_fragments - skip; i++) {
195 Fragment *frag = os->fragments[i];
220 OutputStream *os = &c->streams[i];
221 if (os->nb_fragments > 0) {
222 Fragment *last = os->fragments[os->nb_fragments - 1];
226 video_chunks = os->nb_fragments;
229 audio_chunks = os->nb_fragments;
249 OutputStream *os = &c->streams[i];
253 avio_printf(out, "<QualityLevel Index=\"%d\" Bitrate=\"%"PRId64"\" FourCC=\"%s\" MaxWidth=\"%d\" MaxHeight=\"%d\" CodecPrivateData=\"%s\" />\n", index, s->streams[i]->codecpar->bit_rate, os->fourcc, s->streams[i]->codecpar->width, s->streams[i]->codecpar->height, os->private_str);
263 OutputStream *os = &c->streams[i];
268 index, s->streams[i]->codecpar->bit_rate, os->fourcc, s->streams[i]->codecpar->sample_rate,
269 s->streams[i]->codecpar->ch_layout.nb_channels, os->packet_size, os->audio_tag, os->private_str);
303 OutputStream *os = &c->streams[i];
311 snprintf(os->dirname, sizeof(os->dirname), "%s/QualityLevels(Tmp_%d)", s->url, i);
313 snprintf(os->dirname, sizeof(os->dirname), "%s/QualityLevels(%"PRId64")", s->url, s->streams[i]->codecpar->bit_rate);
316 if (mkdir(os->dirname, 0777) == -1 && errno != EEXIST) {
321 os->ctx = ctx = avformat_alloc_context();
337 ctx->pb = avio_alloc_context(os->iobuf, sizeof(os->iobuf), 1, os, NULL, ism_write, ism_seek);
353 os->stream_type_tag = "video";
355 os->fourcc = "H264";
357 os->fourcc = "WVC1";
364 os->stream_type_tag = "audio";
366 os->fourcc = "AACL";
367 os->audio_tag = 0xff;
369 os->fourcc = "WMAP";
370 os->audio_tag = 0x0162;
375 os->packet_size = st->codecpar->block_align ? st->codecpar->block_align : 4;
377 get_private_data(os);
441 static int add_fragment(OutputStream *os, const char *file, const char *infofile, int64_t start_time, int64_t duration, int64_t start_pos, int64_t size)
445 if (os->nb_fragments >= os->fragments_size) {
446 os->fragments_size = (os->fragments_size + 1) * 2;
447 if ((err = av_reallocp_array(&os->fragments, sizeof(*os->fragments),
448 os->fragments_size)) < 0) {
449 os->fragments_size = 0;
450 os->nb_fragments = 0;
463 frag->n = os->fragment_index;
464 os->fragments[os->nb_fragments++] = frag;
465 os->fragment_index++;
502 OutputStream *os = &c->streams[i];
506 if (!os->packets_written)
509 snprintf(filename, sizeof(filename), "%s/temp", os->dirname);
510 ret = ffurl_open_whitelist(&os->out, filename, AVIO_FLAG_WRITE, &s->interrupt_callback, NULL, s->protocol_whitelist, s->protocol_blacklist, NULL);
513 os->cur_start_pos = os->tail_pos;
514 av_write_frame(os->ctx, NULL);
515 avio_flush(os->ctx->pb);
516 os->packets_written = 0;
517 if (!os->out || os->tail_out)
520 ffurl_closep(&os->out);
521 size = os->tail_pos - os->cur_start_pos;
535 memcpy(curr_dirname, os->dirname, sizeof(os->dirname));
536 snprintf(os->dirname, sizeof(os->dirname), "%s/QualityLevels(%"PRId64")", s->url, s->streams[i]->codecpar->bit_rate);
537 snprintf(filename, sizeof(filename), "%s/temp", os->dirname);
540 if ((ret = ff_rename((const char*)curr_dirname, os->dirname, s)) < 0)
544 snprintf(header_filename, sizeof(header_filename), "%s/FragmentInfo(%s=%"PRIu64")", os->dirname, os->stream_type_tag, start_ts);
545 snprintf(target_filename, sizeof(target_filename), "%s/Fragments(%s=%"PRIu64")", os->dirname, os->stream_type_tag, start_ts);
550 add_fragment(os, target_filename, header_filename, start_ts, duration,
551 os->cur_start_pos, size);
556 OutputStream *os = &c->streams[i];
558 int remove = os->nb_fragments - c->window_size - c->extra_window_size - c->lookahead_count;
560 remove = os->nb_fragments;
563 unlink(os->fragments[j]->file);
564 unlink(os->fragments[j]->infofile);
565 av_freep(&os->fragments[j]);
567 os->nb_fragments -= remove;
568 memmove(os->fragments, os->fragments + remove, os->nb_fragments * sizeof(*os->fragments));
571 rmdir(os->dirname);
585 OutputStream *os = &c->streams[pkt->stream_index];
595 pkt->flags & AV_PKT_FLAG_KEY && os->packets_written) {
602 os->packets_written++;
603 return ff_write_chained(os->ctx, 0, pkt, s, 0);