Mercurial > libavformat.hg
comparison libnut.c @ 1600:72cb68e511e4 libavformat
sync to libnut, nom->num
| author | ods15 |
|---|---|
| date | Sat, 23 Dec 2006 12:33:37 +0000 |
| parents | 518d9cecef02 |
| children | 2a85c82b8538 |
comparison
equal
deleted
inserted
replaced
| 1599:1be19e4024a0 | 1600:72cb68e511e4 |
|---|---|
| 46 | 46 |
| 47 for (i = 0; i < avf->nb_streams; i++) { | 47 for (i = 0; i < avf->nb_streams; i++) { |
| 48 AVCodecContext * codec = avf->streams[i]->codec; | 48 AVCodecContext * codec = avf->streams[i]->codec; |
| 49 int j; | 49 int j; |
| 50 int fourcc = 0; | 50 int fourcc = 0; |
| 51 int nom, denom, ssize; | 51 int num, denom, ssize; |
| 52 | 52 |
| 53 s[i].type = codec->codec_type == CODEC_TYPE_VIDEO ? NUT_VIDEO_CLASS : NUT_AUDIO_CLASS; | 53 s[i].type = codec->codec_type == CODEC_TYPE_VIDEO ? NUT_VIDEO_CLASS : NUT_AUDIO_CLASS; |
| 54 | 54 |
| 55 if (codec->codec_tag) fourcc = codec->codec_tag; | 55 if (codec->codec_tag) fourcc = codec->codec_tag; |
| 56 else fourcc = codec_get_tag(nut_tags, codec->codec_id); | 56 else fourcc = codec_get_tag(nut_tags, codec->codec_id); |
| 62 | 62 |
| 63 s[i].fourcc_len = 4; | 63 s[i].fourcc_len = 4; |
| 64 s[i].fourcc = av_malloc(s[i].fourcc_len); | 64 s[i].fourcc = av_malloc(s[i].fourcc_len); |
| 65 for (j = 0; j < s[i].fourcc_len; j++) s[i].fourcc[j] = (fourcc >> (j*8)) & 0xFF; | 65 for (j = 0; j < s[i].fourcc_len; j++) s[i].fourcc[j] = (fourcc >> (j*8)) & 0xFF; |
| 66 | 66 |
| 67 ff_parse_specific_params(codec, &nom, &ssize, &denom); | 67 ff_parse_specific_params(codec, &num, &ssize, &denom); |
| 68 av_set_pts_info(avf->streams[i], 60, denom, nom); | 68 av_set_pts_info(avf->streams[i], 60, denom, num); |
| 69 | 69 |
| 70 s[i].time_base.nom = denom; | 70 s[i].time_base.num = denom; |
| 71 s[i].time_base.den = nom; | 71 s[i].time_base.den = num; |
| 72 | 72 |
| 73 s[i].fixed_fps = 0; | 73 s[i].fixed_fps = 0; |
| 74 s[i].decode_delay = codec->has_b_frames; | 74 s[i].decode_delay = codec->has_b_frames; |
| 75 s[i].codec_specific_len = codec->extradata_size; | 75 s[i].codec_specific_len = codec->extradata_size; |
| 76 s[i].codec_specific = codec->extradata; | 76 s[i].codec_specific = codec->extradata; |
| 80 s[i].height = codec->height; | 80 s[i].height = codec->height; |
| 81 s[i].sample_width = 0; | 81 s[i].sample_width = 0; |
| 82 s[i].sample_height = 0; | 82 s[i].sample_height = 0; |
| 83 s[i].colorspace_type = 0; | 83 s[i].colorspace_type = 0; |
| 84 } else { | 84 } else { |
| 85 s[i].samplerate_nom = codec->sample_rate; | 85 s[i].samplerate_num = codec->sample_rate; |
| 86 s[i].samplerate_denom = 1; | 86 s[i].samplerate_denom = 1; |
| 87 s[i].channel_count = codec->channels; | 87 s[i].channel_count = codec->channels; |
| 88 } | 88 } |
| 89 } | 89 } |
| 90 | 90 |
| 197 if (st->codec->extradata_size) { | 197 if (st->codec->extradata_size) { |
| 198 st->codec->extradata = av_mallocz(st->codec->extradata_size); | 198 st->codec->extradata = av_mallocz(st->codec->extradata_size); |
| 199 memcpy(st->codec->extradata, s[i].codec_specific, st->codec->extradata_size); | 199 memcpy(st->codec->extradata, s[i].codec_specific, st->codec->extradata_size); |
| 200 } | 200 } |
| 201 | 201 |
| 202 av_set_pts_info(avf->streams[i], 60, s[i].time_base.nom, s[i].time_base.den); | 202 av_set_pts_info(avf->streams[i], 60, s[i].time_base.num, s[i].time_base.den); |
| 203 st->start_time = 0; | 203 st->start_time = 0; |
| 204 st->duration = s[i].max_pts; | 204 st->duration = s[i].max_pts; |
| 205 | 205 |
| 206 st->codec->codec_id = codec_get_id(nut_tags, st->codec->codec_tag); | 206 st->codec->codec_id = codec_get_id(nut_tags, st->codec->codec_tag); |
| 207 | 207 |
| 209 case NUT_AUDIO_CLASS: | 209 case NUT_AUDIO_CLASS: |
| 210 st->codec->codec_type = CODEC_TYPE_AUDIO; | 210 st->codec->codec_type = CODEC_TYPE_AUDIO; |
| 211 if (st->codec->codec_id == CODEC_ID_NONE) st->codec->codec_id = codec_get_wav_id(st->codec->codec_tag); | 211 if (st->codec->codec_id == CODEC_ID_NONE) st->codec->codec_id = codec_get_wav_id(st->codec->codec_tag); |
| 212 | 212 |
| 213 st->codec->channels = s[i].channel_count; | 213 st->codec->channels = s[i].channel_count; |
| 214 st->codec->sample_rate = s[i].samplerate_nom / s[i].samplerate_denom; | 214 st->codec->sample_rate = s[i].samplerate_num / s[i].samplerate_denom; |
| 215 break; | 215 break; |
| 216 case NUT_VIDEO_CLASS: | 216 case NUT_VIDEO_CLASS: |
| 217 st->codec->codec_type = CODEC_TYPE_VIDEO; | 217 st->codec->codec_type = CODEC_TYPE_VIDEO; |
| 218 if (st->codec->codec_id == CODEC_ID_NONE) st->codec->codec_id = codec_get_bmp_id(st->codec->codec_tag); | 218 if (st->codec->codec_id == CODEC_ID_NONE) st->codec->codec_id = codec_get_bmp_id(st->codec->codec_tag); |
| 219 | 219 |
| 253 } | 253 } |
| 254 | 254 |
| 255 static int nut_read_seek(AVFormatContext * avf, int stream_index, int64_t target_ts, int flags) { | 255 static int nut_read_seek(AVFormatContext * avf, int stream_index, int64_t target_ts, int flags) { |
| 256 NUTContext * priv = avf->priv_data; | 256 NUTContext * priv = avf->priv_data; |
| 257 int active_streams[] = { stream_index, -1 }; | 257 int active_streams[] = { stream_index, -1 }; |
| 258 double time_pos = target_ts * priv->s[stream_index].time_base.nom / (double)priv->s[stream_index].time_base.den; | 258 double time_pos = target_ts * priv->s[stream_index].time_base.num / (double)priv->s[stream_index].time_base.den; |
| 259 | 259 |
| 260 if (nut_seek(priv->nut, time_pos, 2*!(flags & AVSEEK_FLAG_BACKWARD), active_streams)) return -1; | 260 if (nut_seek(priv->nut, time_pos, 2*!(flags & AVSEEK_FLAG_BACKWARD), active_streams)) return -1; |
| 261 | 261 |
| 262 return 0; | 262 return 0; |
| 263 } | 263 } |
