better codec_tag setting
This commit is contained in:
parent
8b13401250
commit
ae63861cd1
|
@ -80,17 +80,18 @@ VideoStore::VideoStore(const char *filename_in, const char *format_in,
|
||||||
|
|
||||||
output_format = oc->oformat;
|
output_format = oc->oformat;
|
||||||
|
|
||||||
video_stream = avformat_new_stream(oc, (AVCodec *)input_video_stream->codec->codec);
|
|
||||||
if (!video_stream) {
|
|
||||||
Fatal("Unable to create video out stream\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = avcodec_copy_context(video_stream->codec, input_video_stream->codec);
|
ret = avcodec_copy_context(video_stream->codec, input_video_stream->codec);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
Fatal("Unable to copy input video context to output video context %s\n",
|
Fatal("Unable to copy input video context to output video context %s\n",
|
||||||
av_make_error_string(ret).c_str());
|
av_make_error_string(ret).c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
video_stream = avformat_new_stream(oc, (AVCodec *)video_stream->codec->codec);
|
||||||
|
if (!video_stream) {
|
||||||
|
Fatal("Unable to create video out stream\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if ( input_video_stream->codec->sample_aspect_ratio.den && ( video_stream->sample_aspect_ratio.den != input_video_stream->codec->sample_aspect_ratio.den ) ) {
|
if ( input_video_stream->codec->sample_aspect_ratio.den && ( video_stream->sample_aspect_ratio.den != input_video_stream->codec->sample_aspect_ratio.den ) ) {
|
||||||
Warning("Fixing sample_aspect_ratio.den from (%d) to (%d)", video_stream->sample_aspect_ratio.den, input_video_stream->codec->sample_aspect_ratio.den );
|
Warning("Fixing sample_aspect_ratio.den from (%d) to (%d)", video_stream->sample_aspect_ratio.den, input_video_stream->codec->sample_aspect_ratio.den );
|
||||||
video_stream->sample_aspect_ratio.den = input_video_stream->codec->sample_aspect_ratio.den;
|
video_stream->sample_aspect_ratio.den = input_video_stream->codec->sample_aspect_ratio.den;
|
||||||
|
@ -133,7 +134,18 @@ VideoStore::VideoStore(const char *filename_in, const char *format_in,
|
||||||
video_stream->codec->time_base.den = video_stream->time_base.den;
|
video_stream->codec->time_base.den = video_stream->time_base.den;
|
||||||
}
|
}
|
||||||
|
|
||||||
video_stream->codec->codec_tag = 0;
|
// WHY?
|
||||||
|
//video_stream->codec->codec_tag = 0;
|
||||||
|
if (!video_stream->codec->codec_tag) {
|
||||||
|
if (! oc->oformat->codec_tag
|
||||||
|
|| av_codec_get_id (oc->oformat->codec_tag, input_video_stream->codec->codec_tag) == video_stream->codec->codec_id
|
||||||
|
|| av_codec_get_tag(oc->oformat->codec_tag, input_video_stream->codec->codec_id) <= 0) {
|
||||||
|
Warning("Setting codec tag");
|
||||||
|
video_stream->codec->codec_tag = input_video_stream->codec->codec_tag;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (oc->oformat->flags & AVFMT_GLOBALHEADER) {
|
if (oc->oformat->flags & AVFMT_GLOBALHEADER) {
|
||||||
video_stream->codec->flags |= CODEC_FLAG_GLOBAL_HEADER;
|
video_stream->codec->flags |= CODEC_FLAG_GLOBAL_HEADER;
|
||||||
}
|
}
|
||||||
|
@ -342,16 +354,6 @@ int VideoStore::writeVideoFramePacket(AVPacket *ipkt, AVStream *input_video_stre
|
||||||
|
|
||||||
Debug(4, "writeVideoFrame init_packet");
|
Debug(4, "writeVideoFrame init_packet");
|
||||||
av_init_packet(&opkt);
|
av_init_packet(&opkt);
|
||||||
Debug(3, "Time bases input stream time base(%d/%d) input codec tb: (%d/%d) video_stream->time-base(%d/%d) output codec tb (%d/%d)",
|
|
||||||
input_video_stream->time_base.num,
|
|
||||||
input_video_stream->time_base.den,
|
|
||||||
input_video_stream->codec->time_base.num,
|
|
||||||
input_video_stream->codec->time_base.den,
|
|
||||||
video_stream->time_base.num,
|
|
||||||
video_stream->time_base.den,
|
|
||||||
video_stream->codec->time_base.num,
|
|
||||||
video_stream->codec->time_base.den
|
|
||||||
);
|
|
||||||
|
|
||||||
if ( 1 ) {
|
if ( 1 ) {
|
||||||
//Scale the PTS of the outgoing packet to be the correct time base
|
//Scale the PTS of the outgoing packet to be the correct time base
|
||||||
|
|
Loading…
Reference in New Issue