Merge commit 'c64f3615118d757dcf76040fe5407bf2b3883206'
authorMichael Niedermayer <michaelni@gmx.at>
Mon, 17 Nov 2014 12:00:10 +0000 (13:00 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Mon, 17 Nov 2014 12:01:39 +0000 (13:01 +0100)
* commit 'c64f3615118d757dcf76040fe5407bf2b3883206':
  flvenc: Send new metadata when FLAG_METADATA_UPDATED is set.

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libavformat/flvenc.c

@@@ -525,33 -503,12 +541,22 @@@ static int flv_write_packet(AVFormatCon
          return AVERROR(EINVAL);
      }
  
 -    if (enc->codec_id == AV_CODEC_ID_H264)
 -        /* check if extradata looks like MP4 */
 +    if (enc->codec_id == AV_CODEC_ID_H264 || enc->codec_id == AV_CODEC_ID_MPEG4) {
 +        /* check if extradata looks like mp4 formated */
          if (enc->extradata_size > 0 && *(uint8_t*)enc->extradata != 1)
 -            if (ff_avc_parse_nal_units_buf(pkt->data, &data, &size) < 0)
 -                return -1;
 +            if ((ret = ff_avc_parse_nal_units_buf(pkt->data, &data, &size)) < 0)
 +                return ret;
 +    } else if (enc->codec_id == AV_CODEC_ID_AAC && pkt->size > 2 &&
 +               (AV_RB16(pkt->data) & 0xfff0) == 0xfff0) {
 +        if (!s->streams[pkt->stream_index]->nb_frames) {
 +        av_log(s, AV_LOG_ERROR, "Malformed AAC bitstream detected: "
 +               "use the audio bitstream filter 'aac_adtstoasc' to fix it "
 +               "('-bsf:a aac_adtstoasc' option with ffmpeg)\n");
 +        return AVERROR_INVALIDDATA;
 +        }
 +        av_log(s, AV_LOG_WARNING, "aac bitstream error\n");
 +    }
  
-     if (flv->delay == AV_NOPTS_VALUE)
-         flv->delay = -pkt->dts;
-     if (pkt->dts < -flv->delay) {
-         av_log(s, AV_LOG_WARNING,
-                "Packets are not in the proper order with respect to DTS\n");
-         return AVERROR(EINVAL);
-     }
-     ts = pkt->dts + flv->delay; // add delay to force positive dts
      /* check Speex packet duration */
      if (enc->codec_id == AV_CODEC_ID_SPEEX && ts - sc->last_ts > 160)
          av_log(s, AV_LOG_WARNING, "Warning: Speex stream has more than "