Updated MistInAV in line with recent libavformat deprecations

This commit is contained in:
Thulinma 2017-05-16 14:52:33 +02:00
parent 14d15ce318
commit fac86bce49

View file

@ -97,7 +97,7 @@ namespace Mist {
for(unsigned int i=0; i < pFormatCtx->nb_streams; ){ for(unsigned int i=0; i < pFormatCtx->nb_streams; ){
AVStream * strm = pFormatCtx->streams[i++]; AVStream * strm = pFormatCtx->streams[i++];
myMeta.tracks[i].trackID = i; myMeta.tracks[i].trackID = i;
switch (strm->codec->codec_id){ switch (strm->codecpar->codec_id){
case AV_CODEC_ID_HEVC: case AV_CODEC_ID_HEVC:
myMeta.tracks[i].codec = "HEVC"; myMeta.tracks[i].codec = "HEVC";
break; break;
@ -124,7 +124,7 @@ namespace Mist {
myMeta.tracks[i].codec = "AC3"; myMeta.tracks[i].codec = "AC3";
break; break;
default: default:
const AVCodecDescriptor *desc = av_codec_get_codec_descriptor(strm->codec); const AVCodecDescriptor *desc = avcodec_descriptor_get(strm->codecpar->codec_id);
if (desc && desc->name){ if (desc && desc->name){
myMeta.tracks[i].codec = desc->name; myMeta.tracks[i].codec = desc->name;
}else{ }else{
@ -132,46 +132,24 @@ namespace Mist {
} }
break; break;
} }
if (strm->codec->extradata_size){ if (strm->codecpar->extradata_size){
myMeta.tracks[i].init = std::string((char*)strm->codec->extradata, strm->codec->extradata_size); myMeta.tracks[i].init = std::string((char*)strm->codecpar->extradata, strm->codecpar->extradata_size);
} }
if(strm->codec->codec_type == AVMEDIA_TYPE_VIDEO){ if(strm->codecpar->codec_type == AVMEDIA_TYPE_VIDEO){
myMeta.tracks[i].type = "video"; myMeta.tracks[i].type = "video";
if (strm->avg_frame_rate.den && strm->avg_frame_rate.num){ if (strm->avg_frame_rate.den && strm->avg_frame_rate.num){
myMeta.tracks[i].fpks = (strm->avg_frame_rate.num * 1000) / strm->avg_frame_rate.den; myMeta.tracks[i].fpks = (strm->avg_frame_rate.num * 1000) / strm->avg_frame_rate.den;
}else{ }else{
myMeta.tracks[i].fpks = 0; myMeta.tracks[i].fpks = 0;
} }
myMeta.tracks[i].width = strm->codec->width; myMeta.tracks[i].width = strm->codecpar->width;
myMeta.tracks[i].height = strm->codec->height; myMeta.tracks[i].height = strm->codecpar->height;
} }
if(strm->codec->codec_type == AVMEDIA_TYPE_AUDIO){ if(strm->codecpar->codec_type == AVMEDIA_TYPE_AUDIO){
myMeta.tracks[i].type = "audio"; myMeta.tracks[i].type = "audio";
myMeta.tracks[i].rate = strm->codec->sample_rate; myMeta.tracks[i].rate = strm->codecpar->sample_rate;
switch (strm->codec->sample_fmt){ myMeta.tracks[i].size = strm->codecpar->frame_size;
case AV_SAMPLE_FMT_U8: myMeta.tracks[i].channels = strm->codecpar->channels;
case AV_SAMPLE_FMT_U8P:
myMeta.tracks[i].size = 8;
break;
case AV_SAMPLE_FMT_S16:
case AV_SAMPLE_FMT_S16P:
myMeta.tracks[i].size = 16;
break;
case AV_SAMPLE_FMT_S32:
case AV_SAMPLE_FMT_S32P:
case AV_SAMPLE_FMT_FLT:
case AV_SAMPLE_FMT_FLTP:
myMeta.tracks[i].size = 32;
break;
case AV_SAMPLE_FMT_DBL:
case AV_SAMPLE_FMT_DBLP:
myMeta.tracks[i].size = 64;
break;
default:
myMeta.tracks[i].size = 0;
break;
}
myMeta.tracks[i].channels = strm->codec->channels;
} }
} }
@ -191,7 +169,7 @@ namespace Mist {
packOffset = ((packet.pts - packet.dts) * 1000 * strm->time_base.num / strm->time_base.den); packOffset = ((packet.pts - packet.dts) * 1000 * strm->time_base.num / strm->time_base.den);
} }
myMeta.update(packTime, packOffset, packet.stream_index + 1, packet.size, packet.pos, isKey); myMeta.update(packTime, packOffset, packet.stream_index + 1, packet.size, packet.pos, isKey);
av_free_packet(&packet); av_packet_unref(&packet);
} }
myMeta.toFile(config->getString("input") + ".dtsh"); myMeta.toFile(config->getString("input") + ".dtsh");
@ -222,7 +200,7 @@ namespace Mist {
packOffset = ((packet.pts - packet.dts) * 1000 * strm->time_base.num / strm->time_base.den); packOffset = ((packet.pts - packet.dts) * 1000 * strm->time_base.num / strm->time_base.den);
} }
thisPacket.genericFill(packTime, packOffset, packet.stream_index + 1, (const char*)packet.data, packet.size, 0, isKey); thisPacket.genericFill(packTime, packOffset, packet.stream_index + 1, (const char*)packet.data, packet.size, 0, isKey);
av_free_packet(&packet); av_packet_unref(&packet);
return;//success! return;//success!
} }
thisPacket.null(); thisPacket.null();