Unified · Split
| @@ -455,6 +455,7 @@ attribute_deprecated int udp_get_local_port(URLContext *h); · 454 unmodified lines | |||
| 455 | attribute_deprecated void init_checksum(AVIOContext *s, | 455 | attribute_deprecated void init_checksum(AVIOContext *s, |
| 456 | unsigned long (*update_checksum)(unsigned long c, const uint8_t *p, unsigned int len), | 456 | unsigned long (*update_checksum)(unsigned long c, const uint8_t *p, unsigned int len), |
| 457 | unsigned long checksum); | 457 | unsigned long checksum); |
| 458 | attribute_deprecated unsigned long get_checksum(AVIOContext *s); | ||
| 458 | #endif | 459 | #endif |
| 459 | 460 | ||
| 460 | AVIOContext *avio_alloc_context( | 461 | AVIOContext *avio_alloc_context( |
| @@ -675,8 +676,6 @@ int url_open_dyn_packet_buf(AVIOContext **s, int max_packet_size); · 214 unmodified lines | |||
| 675 | */ | 676 | */ |
| 676 | int url_close_dyn_buf(AVIOContext *s, uint8_t **pbuffer); | 677 | int url_close_dyn_buf(AVIOContext *s, uint8_t **pbuffer); |
| 677 | 678 | ||
| 678 | unsigned long get_checksum(AVIOContext *s); | ||
| 679 | |||
| 680 | #if FF_API_UDP_GET_FILE | 679 | #if FF_API_UDP_GET_FILE |
| 681 | int udp_get_file_handle(URLContext *h); | 680 | int udp_get_file_handle(URLContext *h); |
| 682 | #endif | 681 | #endif |
| @@ -77,6 +77,7 @@ int ff_udp_get_local_port(URLContext *h); · 76 unmodified lines | |||
| 77 | void ffio_init_checksum(AVIOContext *s, | 77 | void ffio_init_checksum(AVIOContext *s, |
| 78 | unsigned long (*update_checksum)(unsigned long c, const uint8_t *p, unsigned int len), | 78 | unsigned long (*update_checksum)(unsigned long c, const uint8_t *p, unsigned int len), |
| 79 | unsigned long checksum); | 79 | unsigned long checksum); |
| 80 | unsigned long ffio_get_checksum(AVIOContext *s); | ||
| 80 | unsigned long ff_crc04C11DB7_update(unsigned long checksum, const uint8_t *buf, | 81 | unsigned long ff_crc04C11DB7_update(unsigned long checksum, const uint8_t *buf, |
| 81 | unsigned int len); | 82 | unsigned int len); |
| 82 | 83 | ||
| @@ -412,6 +412,10 @@ void init_checksum(AVIOContext *s, · 411 unmodified lines | |||
| 412 | { | 412 | { |
| 413 | ffio_init_checksum(s, update_checksum, checksum); | 413 | ffio_init_checksum(s, update_checksum, checksum); |
| 414 | } | 414 | } |
| 415 | unsigned long get_checksum(AVIOContext *s) | ||
| 416 | { | ||
| 417 | return ffio_get_checksum(s); | ||
| 418 | } | ||
| 415 | #endif | 419 | #endif |
| 416 | 420 | ||
| 417 | int avio_put_str(AVIOContext *s, const char *str) | 421 | int avio_put_str(AVIOContext *s, const char *str) |
| @@ -554,7 +558,7 @@ unsigned long ff_crc04C11DB7_update(unsigned long checksum, const uint8_t *buf, · 136 unmodified lines | |||
| 554 | return av_crc(av_crc_get_table(AV_CRC_32_IEEE), checksum, buf, len); | 558 | return av_crc(av_crc_get_table(AV_CRC_32_IEEE), checksum, buf, len); |
| 555 | } | 559 | } |
| 556 | 560 | ||
| 557 | unsigned long get_checksum(AVIOContext *s) | 561 | unsigned long ffio_get_checksum(AVIOContext *s) |
| 558 | { | 562 | { |
| 559 | s->checksum= s->update_checksum(s->checksum, s->checksum_ptr, s->buf_ptr - s->checksum_ptr); | 563 | s->checksum= s->update_checksum(s->checksum, s->checksum_ptr, s->buf_ptr - s->checksum_ptr); |
| 560 | s->update_checksum= NULL; | 564 | s->update_checksum= NULL; |
| @@ -108,7 +108,7 @@ static int get_packetheader(NUTContext *nut, AVIOContext *bc, int calculate_chec · 107 unmodified lines | |||
| 108 | size= ffio_read_varlen(bc); | 108 | size= ffio_read_varlen(bc); |
| 109 | if(size > 4096) | 109 | if(size > 4096) |
| 110 | avio_rb32(bc); | 110 | avio_rb32(bc); |
| 111 | if(get_checksum(bc) && size > 4096) | 111 | if(ffio_get_checksum(bc) && size > 4096) |
| 112 | return -1; | 112 | return -1; |
| 113 | 113 | ||
| 114 | ffio_init_checksum(bc, calculate_checksum ? ff_crc04C11DB7_update : NULL, 0); | 114 | ffio_init_checksum(bc, calculate_checksum ? ff_crc04C11DB7_update : NULL, 0); |
| @@ -285,7 +285,7 @@ static int decode_main_header(NUTContext *nut){ · 170 unmodified lines | |||
| 285 | assert(nut->header_len[0]==0); | 285 | assert(nut->header_len[0]==0); |
| 286 | } | 286 | } |
| 287 | 287 | ||
| 288 | if(skip_reserved(bc, end) || get_checksum(bc)){ | 288 | if(skip_reserved(bc, end) || ffio_get_checksum(bc)){ |
| 289 | av_log(s, AV_LOG_ERROR, "main header checksum mismatch\n"); | 289 | av_log(s, AV_LOG_ERROR, "main header checksum mismatch\n"); |
| 290 | return AVERROR_INVALIDDATA; | 290 | return AVERROR_INVALIDDATA; |
| 291 | } | 291 | } |
| @@ -374,7 +374,7 @@ static int decode_stream_header(NUTContext *nut){ · 82 unmodified lines | |||
| 374 | ffio_read_varlen(bc); // samplerate_den | 374 | ffio_read_varlen(bc); // samplerate_den |
| 375 | GET_V(st->codec->channels, tmp > 0) | 375 | GET_V(st->codec->channels, tmp > 0) |
| 376 | } | 376 | } |
| 377 | if(skip_reserved(bc, end) || get_checksum(bc)){ | 377 | if(skip_reserved(bc, end) || ffio_get_checksum(bc)){ |
| 378 | av_log(s, AV_LOG_ERROR, "stream header %d checksum mismatch\n", stream_id); | 378 | av_log(s, AV_LOG_ERROR, "stream header %d checksum mismatch\n", stream_id); |
| 379 | return -1; | 379 | return -1; |
| 380 | } | 380 | } |
| @@ -469,7 +469,7 @@ static int decode_info_header(NUTContext *nut){ · 88 unmodified lines | |||
| 469 | } | 469 | } |
| 470 | } | 470 | } |
| 471 | 471 | ||
| 472 | if(skip_reserved(bc, end) || get_checksum(bc)){ | 472 | if(skip_reserved(bc, end) || ffio_get_checksum(bc)){ |
| 473 | av_log(s, AV_LOG_ERROR, "info header checksum mismatch\n"); | 473 | av_log(s, AV_LOG_ERROR, "info header checksum mismatch\n"); |
| 474 | return -1; | 474 | return -1; |
| 475 | } | 475 | } |
| @@ -493,7 +493,7 @@ static int decode_syncpoint(NUTContext *nut, int64_t *ts, int64_t *back_ptr){ · 17 unmodified lines | |||
| 493 | 493 | ||
| 494 | ff_nut_reset_ts(nut, nut->time_base[tmp % nut->time_base_count], tmp / nut->time_base_count); | 494 | ff_nut_reset_ts(nut, nut->time_base[tmp % nut->time_base_count], tmp / nut->time_base_count); |
| 495 | 495 | ||
| 496 | if(skip_reserved(bc, end) || get_checksum(bc)){ | 496 | if(skip_reserved(bc, end) || ffio_get_checksum(bc)){ |
| 497 | av_log(s, AV_LOG_ERROR, "sync point checksum mismatch\n"); | 497 | av_log(s, AV_LOG_ERROR, "sync point checksum mismatch\n"); |
| 498 | return -1; | 498 | return -1; |
| 499 | } | 499 | } |
| @@ -590,7 +590,7 @@ static int find_and_decode_index(NUTContext *nut){ · 90 unmodified lines | |||
| 590 | } | 590 | } |
| 591 | } | 591 | } |
| 592 | 592 | ||
| 593 | if(skip_reserved(bc, end) || get_checksum(bc)){ | 593 | if(skip_reserved(bc, end) || ffio_get_checksum(bc)){ |
| 594 | av_log(s, AV_LOG_ERROR, "index checksum mismatch\n"); | 594 | av_log(s, AV_LOG_ERROR, "index checksum mismatch\n"); |
| 595 | goto fail; | 595 | goto fail; |
| 596 | } | 596 | } |
| @@ -289,13 +289,13 @@ static void put_packet(NUTContext *nut, AVIOContext *bc, AVIOContext *dyn_bc, in · 288 unmodified lines | |||
| 289 | avio_wb64(bc, startcode); | 289 | avio_wb64(bc, startcode); |
| 290 | ff_put_v(bc, forw_ptr); | 290 | ff_put_v(bc, forw_ptr); |
| 291 | if(forw_ptr > 4096) | 291 | if(forw_ptr > 4096) |
| 292 | avio_wl32(bc, get_checksum(bc)); | 292 | avio_wl32(bc, ffio_get_checksum(bc)); |
| 293 | 293 | ||
| 294 | if(calculate_checksum) | 294 | if(calculate_checksum) |
| 295 | ffio_init_checksum(bc, ff_crc04C11DB7_update, 0); | 295 | ffio_init_checksum(bc, ff_crc04C11DB7_update, 0); |
| 296 | avio_write(bc, dyn_buf, dyn_size); | 296 | avio_write(bc, dyn_buf, dyn_size); |
| 297 | if(calculate_checksum) | 297 | if(calculate_checksum) |
| 298 | avio_wl32(bc, get_checksum(bc)); | 298 | avio_wl32(bc, ffio_get_checksum(bc)); |
| 299 | 299 | ||
| 300 | av_free(dyn_buf); | 300 | av_free(dyn_buf); |
| 301 | } | 301 | } |
| @@ -818,8 +818,8 @@ static int write_packet(AVFormatContext *s, AVPacket *pkt){ · 516 unmodified lines | |||
| 818 | if(flags & FLAG_SIZE_MSB) ff_put_v(bc, pkt->size / fc->size_mul); | 818 | if(flags & FLAG_SIZE_MSB) ff_put_v(bc, pkt->size / fc->size_mul); |
| 819 | if(flags & FLAG_HEADER_IDX) ff_put_v(bc, header_idx= best_header_idx); | 819 | if(flags & FLAG_HEADER_IDX) ff_put_v(bc, header_idx= best_header_idx); |
| 820 | 820 | ||
| 821 | if(flags & FLAG_CHECKSUM) avio_wl32(bc, get_checksum(bc)); | 821 | if(flags & FLAG_CHECKSUM) avio_wl32(bc, ffio_get_checksum(bc)); |
| 822 | else get_checksum(bc); | 822 | else ffio_get_checksum(bc); |
| 823 | 823 | ||
| 824 | avio_write(bc, pkt->data + nut->header_len[header_idx], pkt->size - nut->header_len[header_idx]); | 824 | avio_write(bc, pkt->data + nut->header_len[header_idx], pkt->size - nut->header_len[header_idx]); |
| 825 | nus->last_flags= flags; | 825 | nus->last_flags= flags; |
| @@ -68,7 +68,7 @@ typedef struct { · 67 unmodified lines | |||
| 68 | static void ogg_update_checksum(AVFormatContext *s, AVIOContext *pb, int64_t crc_offset) | 68 | static void ogg_update_checksum(AVFormatContext *s, AVIOContext *pb, int64_t crc_offset) |
| 69 | { | 69 | { |
| 70 | int64_t pos = avio_tell(pb); | 70 | int64_t pos = avio_tell(pb); |
| 71 | uint32_t checksum = get_checksum(pb); | 71 | uint32_t checksum = ffio_get_checksum(pb); |
| 72 | avio_seek(pb, crc_offset, SEEK_SET); | 72 | avio_seek(pb, crc_offset, SEEK_SET); |
| 73 | avio_wb32(pb, checksum); | 73 | avio_wb32(pb, checksum); |
| 74 | avio_seek(pb, pos, SEEK_SET); | 74 | avio_seek(pb, pos, SEEK_SET); |