| 939 | } |
| 940 | |
| 941 | static int shift_data(AVFormatContext *s) |
| 942 | { |
| 943 | int ret; |
| 944 | int64_t metadata_size = 0; |
| 945 | FLVContext *flv = s->priv_data; |
| 946 | |
| 947 | metadata_size = flv->filepositions_count * 9 * 2 + 10; /* filepositions and times value */ |
| 948 | metadata_size += 2 + 13; /* filepositions String */ |
| 949 | metadata_size += 2 + 5; /* times String */ |
| 950 | metadata_size += 3; /* Object end */ |
| 951 | |
| 952 | flv->keyframe_index_size = metadata_size; |
| 953 | |
| 954 | if (metadata_size < 0) |
| 955 | return metadata_size; |
| 956 | |
| 957 | ret = ff_format_shift_data(s, flv->keyframes_info_offset, metadata_size); |
| 958 | if (ret < 0) |
| 959 | return ret; |
| 960 | |
| 961 | avio_seek(s->pb, flv->metadata_size_pos, SEEK_SET); |
| 962 | avio_wb24(s->pb, flv->metadata_totalsize + metadata_size); |
| 963 | |
| 964 | avio_seek(s->pb, flv->metadata_totalsize_pos + metadata_size, SEEK_SET); |
| 965 | avio_wb32(s->pb, flv->metadata_totalsize + 11 + metadata_size); |
| 966 | |
| 967 | return 0; |
| 968 | } |
| 969 | |
| 970 | static int flv_init(struct AVFormatContext *s) |
| 971 | { |
no test coverage detected