lavf/movenc: return meaningful error code from mov_write_header()
This commit is contained in:
		
							parent
							
								
									54c596fe7a
								
							
						
					
					
						commit
						2cfe70ff3e
					
				@ -3705,7 +3705,7 @@ static int mov_write_header(AVFormatContext *s)
 | 
			
		||||
    AVIOContext *pb = s->pb;
 | 
			
		||||
    MOVMuxContext *mov = s->priv_data;
 | 
			
		||||
    AVDictionaryEntry *t, *global_tcr = av_dict_get(s->metadata, "timecode", NULL, 0);
 | 
			
		||||
    int i, hint_track = 0, tmcd_track = 0;
 | 
			
		||||
    int i, ret, hint_track = 0, tmcd_track = 0;
 | 
			
		||||
 | 
			
		||||
    /* Default mode == MP4 */
 | 
			
		||||
    mov->mode = MODE_MP4;
 | 
			
		||||
@ -3840,6 +3840,7 @@ static int mov_write_header(AVFormatContext *s)
 | 
			
		||||
            av_log(s, AV_LOG_ERROR, "Could not find tag for codec %s in stream #%d, "
 | 
			
		||||
                   "codec not currently supported in container\n",
 | 
			
		||||
                   avcodec_get_name(st->codec->codec_id), i);
 | 
			
		||||
            ret = AVERROR(EINVAL);
 | 
			
		||||
            goto error;
 | 
			
		||||
        }
 | 
			
		||||
        /* If hinting of this track is enabled by a later hint track,
 | 
			
		||||
@ -3852,6 +3853,7 @@ static int mov_write_header(AVFormatContext *s)
 | 
			
		||||
                track->tag == MKTAG('m','x','5','p') || track->tag == MKTAG('m','x','5','n')) {
 | 
			
		||||
                if (st->codec->width != 720 || (st->codec->height != 608 && st->codec->height != 512)) {
 | 
			
		||||
                    av_log(s, AV_LOG_ERROR, "D-10/IMX must use 720x608 or 720x512 video resolution\n");
 | 
			
		||||
                    ret = AVERROR(EINVAL);
 | 
			
		||||
                    goto error;
 | 
			
		||||
                }
 | 
			
		||||
                track->height = track->tag >> 24 == 'n' ? 486 : 576;
 | 
			
		||||
@ -3878,6 +3880,7 @@ static int mov_write_header(AVFormatContext *s)
 | 
			
		||||
                     st->codec->codec_id == AV_CODEC_ID_ILBC){
 | 
			
		||||
                if (!st->codec->block_align) {
 | 
			
		||||
                    av_log(s, AV_LOG_ERROR, "track %d: codec block align is not set for adpcm\n", i);
 | 
			
		||||
                    ret = AVERROR(EINVAL);
 | 
			
		||||
                    goto error;
 | 
			
		||||
                }
 | 
			
		||||
                track->sample_size = st->codec->block_align;
 | 
			
		||||
@ -3894,6 +3897,7 @@ static int mov_write_header(AVFormatContext *s)
 | 
			
		||||
                track->enc->codec_id == AV_CODEC_ID_MP3 && track->timescale < 16000) {
 | 
			
		||||
                av_log(s, AV_LOG_ERROR, "track %d: muxing mp3 at %dhz is not supported\n",
 | 
			
		||||
                       i, track->enc->sample_rate);
 | 
			
		||||
                ret = AVERROR(EINVAL);
 | 
			
		||||
                goto error;
 | 
			
		||||
            }
 | 
			
		||||
        } else if (st->codec->codec_type == AVMEDIA_TYPE_SUBTITLE) {
 | 
			
		||||
@ -3948,7 +3952,7 @@ static int mov_write_header(AVFormatContext *s)
 | 
			
		||||
        mov->time += 0x7C25B080; // 1970 based -> 1904 based
 | 
			
		||||
 | 
			
		||||
    if (mov->chapter_track)
 | 
			
		||||
        if (mov_create_chapter_track(s, mov->chapter_track) < 0)
 | 
			
		||||
        if ((ret = mov_create_chapter_track(s, mov->chapter_track)) < 0)
 | 
			
		||||
            goto error;
 | 
			
		||||
 | 
			
		||||
    if (mov->flags & FF_MOV_FLAG_RTP_HINT) {
 | 
			
		||||
@ -3957,7 +3961,7 @@ static int mov_write_header(AVFormatContext *s)
 | 
			
		||||
            AVStream *st = s->streams[i];
 | 
			
		||||
            if (st->codec->codec_type == AVMEDIA_TYPE_VIDEO ||
 | 
			
		||||
                st->codec->codec_type == AVMEDIA_TYPE_AUDIO) {
 | 
			
		||||
                if (ff_mov_init_hinting(s, hint_track, i) < 0)
 | 
			
		||||
                if ((ret = ff_mov_init_hinting(s, hint_track, i)) < 0)
 | 
			
		||||
                    goto error;
 | 
			
		||||
                hint_track++;
 | 
			
		||||
            }
 | 
			
		||||
@ -3975,7 +3979,7 @@ static int mov_write_header(AVFormatContext *s)
 | 
			
		||||
                    t = av_dict_get(st->metadata, "timecode", NULL, 0);
 | 
			
		||||
                if (!t)
 | 
			
		||||
                    continue;
 | 
			
		||||
                if (mov_create_timecode_track(s, tmcd_track, i, t->value) < 0)
 | 
			
		||||
                if ((ret = mov_create_timecode_track(s, tmcd_track, i, t->value)) < 0)
 | 
			
		||||
                    goto error;
 | 
			
		||||
                tmcd_track++;
 | 
			
		||||
            }
 | 
			
		||||
@ -3995,7 +3999,7 @@ static int mov_write_header(AVFormatContext *s)
 | 
			
		||||
    return 0;
 | 
			
		||||
 error:
 | 
			
		||||
    mov_free(s);
 | 
			
		||||
    return -1;
 | 
			
		||||
    return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int get_moov_size(AVFormatContext *s)
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user