| 293 | } |
| 294 | |
| 295 | static int rm_write_header(AVFormatContext *s) |
| 296 | { |
| 297 | RMMuxContext *rm = s->priv_data; |
| 298 | StreamInfo *stream; |
| 299 | int n; |
| 300 | AVCodecContext *codec; |
| 301 | |
| 302 | for(n=0;n<s->nb_streams;n++) { |
| 303 | s->streams[n]->id = n; |
| 304 | codec = s->streams[n]->codec; |
| 305 | stream = &rm->streams[n]; |
| 306 | memset(stream, 0, sizeof(StreamInfo)); |
| 307 | stream->num = n; |
| 308 | stream->bit_rate = codec->bit_rate; |
| 309 | stream->enc = codec; |
| 310 | |
| 311 | switch(codec->codec_type) { |
| 312 | case AVMEDIA_TYPE_AUDIO: |
| 313 | rm->audio_stream = stream; |
| 314 | stream->frame_rate = (float)codec->sample_rate / (float)codec->frame_size; |
| 315 | /* XXX: dummy values */ |
| 316 | stream->packet_max_size = 1024; |
| 317 | stream->nb_packets = 0; |
| 318 | stream->total_frames = stream->nb_packets; |
| 319 | break; |
| 320 | case AVMEDIA_TYPE_VIDEO: |
| 321 | rm->video_stream = stream; |
| 322 | stream->frame_rate = (float)codec->time_base.den / (float)codec->time_base.num; |
| 323 | /* XXX: dummy values */ |
| 324 | stream->packet_max_size = 4096; |
| 325 | stream->nb_packets = 0; |
| 326 | stream->total_frames = stream->nb_packets; |
| 327 | break; |
| 328 | default: |
| 329 | return -1; |
| 330 | } |
| 331 | } |
| 332 | |
| 333 | rv10_write_header(s, 0, 0); |
| 334 | put_flush_packet(s->pb); |
| 335 | return 0; |
| 336 | } |
| 337 | |
| 338 | static int rm_write_audio(AVFormatContext *s, const uint8_t *buf, int size, int flags) |
| 339 | { |
nothing calls this directly
no test coverage detected