matroskadec: don't warn about unknown spherical medata when none is present
[ffmpeg.git] / libavformat / pmpdec.c
index a367344..e2709bb 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "libavutil/intreadwrite.h"
 #include "avformat.h"
+#include "internal.h"
 
 typedef struct PMPContext {
     int       cur_stream;
@@ -38,49 +39,49 @@ static int pmp_probe(AVProbeData *p)
     return 0;
 }
 
-static int pmp_header(AVFormatContext *s, AVFormatParameters *ap)
+static int pmp_header(AVFormatContext *s)
 {
     PMPContext *pmp = s->priv_data;
     AVIOContext *pb = s->pb;
     int tb_num, tb_den;
     int index_cnt;
-    int audio_codec_id = CODEC_ID_NONE;
+    int audio_codec_id = AV_CODEC_ID_NONE;
     int srate, channels;
     int i;
     uint64_t pos;
     AVStream *vst = avformat_new_stream(s, NULL);
     if (!vst)
         return AVERROR(ENOMEM);
-    vst->codec->codec_type = AVMEDIA_TYPE_VIDEO;
+    vst->codecpar->codec_type = AVMEDIA_TYPE_VIDEO;
     avio_skip(pb, 8);
     switch (avio_rl32(pb)) {
     case 0:
-        vst->codec->codec_id = CODEC_ID_MPEG4;
+        vst->codecpar->codec_id = AV_CODEC_ID_MPEG4;
         break;
     case 1:
-        vst->codec->codec_id = CODEC_ID_H264;
+        vst->codecpar->codec_id = AV_CODEC_ID_H264;
         break;
     default:
         av_log(s, AV_LOG_ERROR, "Unsupported video format\n");
         break;
     }
     index_cnt          = avio_rl32(pb);
-    vst->codec->width  = avio_rl32(pb);
-    vst->codec->height = avio_rl32(pb);
+    vst->codecpar->width  = avio_rl32(pb);
+    vst->codecpar->height = avio_rl32(pb);
 
     tb_num = avio_rl32(pb);
     tb_den = avio_rl32(pb);
-    av_set_pts_info(vst, 32, tb_num, tb_den);
+    avpriv_set_pts_info(vst, 32, tb_num, tb_den);
     vst->nb_frames = index_cnt;
     vst->duration  = index_cnt;
 
     switch (avio_rl32(pb)) {
     case 0:
-        audio_codec_id = CODEC_ID_MP3;
+        audio_codec_id = AV_CODEC_ID_MP3;
         break;
     case 1:
         av_log(s, AV_LOG_WARNING, "AAC is not yet correctly supported\n");
-        audio_codec_id = CODEC_ID_AAC;
+        audio_codec_id = AV_CODEC_ID_AAC;
         break;
     default:
         av_log(s, AV_LOG_ERROR, "Unsupported audio format\n");
@@ -94,11 +95,11 @@ static int pmp_header(AVFormatContext *s, AVFormatParameters *ap)
         AVStream *ast = avformat_new_stream(s, NULL);
         if (!ast)
             return AVERROR(ENOMEM);
-        ast->codec->codec_type  = AVMEDIA_TYPE_AUDIO;
-        ast->codec->codec_id    = audio_codec_id;
-        ast->codec->channels    = channels;
-        ast->codec->sample_rate = srate;
-        av_set_pts_info(ast, 32, 1, srate);
+        ast->codecpar->codec_type  = AVMEDIA_TYPE_AUDIO;
+        ast->codecpar->codec_id    = audio_codec_id;
+        ast->codecpar->channels    = channels;
+        ast->codecpar->sample_rate = srate;
+        avpriv_set_pts_info(ast, 32, 1, srate);
     }
     pos = avio_tell(pb) + 4 * index_cnt;
     for (i = 0; i < index_cnt; i++) {
@@ -123,6 +124,11 @@ static int pmp_packet(AVFormatContext *s, AVPacket *pkt)
     if (pmp->cur_stream == 0) {
         int num_packets;
         pmp->audio_packets = avio_r8(pb);
+        if (!pmp->audio_packets) {
+            av_log(s, AV_LOG_ERROR, "No audio packets.\n");
+            return AVERROR_INVALIDDATA;
+        }
+
         num_packets = (pmp->num_streams - 1) * pmp->audio_packets + 1;
         avio_skip(pb, 8);
         pmp->current_packet = 0;
@@ -156,7 +162,7 @@ static int pmp_seek(AVFormatContext *s, int stream_idx, int64_t ts, int flags)
 {
     PMPContext *pmp = s->priv_data;
     pmp->cur_stream = 0;
-    // fallback to default seek now
+    // fall back on default seek now
     return -1;
 }
 
@@ -169,7 +175,7 @@ static int pmp_close(AVFormatContext *s)
 
 AVInputFormat ff_pmp_demuxer = {
     .name           = "pmp",
-    .long_name      = NULL_IF_CONFIG_SMALL("Playstation Portable PMP format"),
+    .long_name      = NULL_IF_CONFIG_SMALL("Playstation Portable PMP"),
     .priv_data_size = sizeof(PMPContext),
     .read_probe     = pmp_probe,
     .read_header    = pmp_header,