From 999e7ebd235058d4b006b8445def2186b5757262 Mon Sep 17 00:00:00 2001 From: Alex Converse Date: Sun, 27 Nov 2011 15:48:20 -0800 Subject: [PATCH 1/8] dca: Replace oversized unused get_bits() with skip_bits_long(). --- libavcodec/dca.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libavcodec/dca.c b/libavcodec/dca.c index 9d24b595c2..21a245585d 100644 --- a/libavcodec/dca.c +++ b/libavcodec/dca.c @@ -520,7 +520,7 @@ static int dca_parse_frame_header(DCAContext * s) init_get_bits(&s->gb, s->dca_buffer, s->dca_buffer_size * 8); /* Sync code */ - get_bits(&s->gb, 32); + skip_bits_long(&s->gb, 32); /* Frame header */ s->frame_type = get_bits(&s->gb, 1); @@ -1258,7 +1258,7 @@ static int dca_subframe_footer(DCAContext * s, int base_channel) /* presumably optional information only appears in the core? */ if (!base_channel) { if (s->timestamp) - get_bits(&s->gb, 32); + skip_bits_long(&s->gb, 32); if (s->aux_data) aux_data_count = get_bits(&s->gb, 6); From 2b45222b6a475d37a349f9abb877e20d99bca335 Mon Sep 17 00:00:00 2001 From: Alex Converse Date: Sun, 27 Nov 2011 16:16:44 -0800 Subject: [PATCH 2/8] md5proto: Fix order of operations. --- libavformat/md5proto.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavformat/md5proto.c b/libavformat/md5proto.c index 8e61e5be4c..c580bfde80 100644 --- a/libavformat/md5proto.c +++ b/libavformat/md5proto.c @@ -36,7 +36,7 @@ static int md5_open(URLContext *h, const char *filename, int flags) return -1; } - if (!flags & AVIO_FLAG_WRITE) + if (!(flags & AVIO_FLAG_WRITE)) return AVERROR(EINVAL); av_md5_init(h->priv_data); From 1469f943adb06b85ac7e22fd3e8121c2308b0830 Mon Sep 17 00:00:00 2001 From: Kostya Shishkov Date: Mon, 28 Nov 2011 09:33:36 +0100 Subject: [PATCH 3/8] indeo3: cosmetics Signed-off-by: Diego Biurrun --- libavcodec/indeo3.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/indeo3.c b/libavcodec/indeo3.c index e266aeecec..4f3cb36606 100644 --- a/libavcodec/indeo3.c +++ b/libavcodec/indeo3.c @@ -756,7 +756,7 @@ static int parse_bintree(Indeo3DecodeContext *ctx, AVCodecContext *avctx, av_log(avctx, AV_LOG_ERROR, "SkipCell procedure not implemented yet!\n"); CHECK_CELL - if(!curr_cell.mv_ptr) + if (!curr_cell.mv_ptr) return AVERROR_INVALIDDATA; copy_cell(ctx, plane, &curr_cell); return 0; From c88ebdb42c0a4e4c3d78c705752f06fe78af27f6 Mon Sep 17 00:00:00 2001 From: Diego Biurrun Date: Sat, 26 Nov 2011 18:35:26 +0100 Subject: [PATCH 4/8] Eliminate pointless 0/NULL initializers in AVCodec and similar declarations. --- libavcodec/dxva2_h264.c | 1 - libavcodec/dxva2_mpeg2.c | 1 - libavcodec/dxva2_vc1.c | 2 -- libavcodec/mjpeg2jpeg_bsf.c | 1 - libavcodec/s302m.c | 1 - libavcodec/vaapi_h264.c | 2 -- libavcodec/vaapi_mpeg2.c | 2 -- libavcodec/vaapi_mpeg4.c | 4 ---- libavcodec/vaapi_vc1.c | 4 ---- libavcodec/vda_h264.c | 1 - libavformat/a64.c | 1 - libavformat/amr.c | 1 - libavformat/mmsh.c | 2 -- libavformat/mpeg.c | 1 - libavformat/rsodec.c | 3 --- libavformat/rsoenc.c | 1 - libavformat/rtpdec_mpeg4.c | 3 --- libavformat/tls.c | 1 - 18 files changed, 32 deletions(-) diff --git a/libavcodec/dxva2_h264.c b/libavcodec/dxva2_h264.c index ea51958c62..9608ecb8e6 100644 --- a/libavcodec/dxva2_h264.c +++ b/libavcodec/dxva2_h264.c @@ -443,7 +443,6 @@ AVHWAccel ff_h264_dxva2_hwaccel = { .type = AVMEDIA_TYPE_VIDEO, .id = CODEC_ID_H264, .pix_fmt = PIX_FMT_DXVA2_VLD, - .capabilities = 0, .start_frame = start_frame, .decode_slice = decode_slice, .end_frame = end_frame, diff --git a/libavcodec/dxva2_mpeg2.c b/libavcodec/dxva2_mpeg2.c index 092123bff5..2e77cd1bd8 100644 --- a/libavcodec/dxva2_mpeg2.c +++ b/libavcodec/dxva2_mpeg2.c @@ -265,7 +265,6 @@ AVHWAccel ff_mpeg2_dxva2_hwaccel = { .type = AVMEDIA_TYPE_VIDEO, .id = CODEC_ID_MPEG2VIDEO, .pix_fmt = PIX_FMT_DXVA2_VLD, - .capabilities = 0, .start_frame = start_frame, .decode_slice = decode_slice, .end_frame = end_frame, diff --git a/libavcodec/dxva2_vc1.c b/libavcodec/dxva2_vc1.c index f8b74a2b35..22ad4598ae 100644 --- a/libavcodec/dxva2_vc1.c +++ b/libavcodec/dxva2_vc1.c @@ -269,7 +269,6 @@ AVHWAccel ff_wmv3_dxva2_hwaccel = { .type = AVMEDIA_TYPE_VIDEO, .id = CODEC_ID_WMV3, .pix_fmt = PIX_FMT_DXVA2_VLD, - .capabilities = 0, .start_frame = start_frame, .decode_slice = decode_slice, .end_frame = end_frame, @@ -282,7 +281,6 @@ AVHWAccel ff_vc1_dxva2_hwaccel = { .type = AVMEDIA_TYPE_VIDEO, .id = CODEC_ID_VC1, .pix_fmt = PIX_FMT_DXVA2_VLD, - .capabilities = 0, .start_frame = start_frame, .decode_slice = decode_slice, .end_frame = end_frame, diff --git a/libavcodec/mjpeg2jpeg_bsf.c b/libavcodec/mjpeg2jpeg_bsf.c index 335a73bf54..a91152d733 100644 --- a/libavcodec/mjpeg2jpeg_bsf.c +++ b/libavcodec/mjpeg2jpeg_bsf.c @@ -108,6 +108,5 @@ static int mjpeg2jpeg_filter(AVBitStreamFilterContext *bsfc, AVBitStreamFilter ff_mjpeg2jpeg_bsf = { .name = "mjpeg2jpeg", - .priv_data_size = 0, .filter = mjpeg2jpeg_filter, }; diff --git a/libavcodec/s302m.c b/libavcodec/s302m.c index faaa8ed2f5..f6f096d89f 100644 --- a/libavcodec/s302m.c +++ b/libavcodec/s302m.c @@ -134,7 +134,6 @@ AVCodec ff_s302m_decoder = { .name = "s302m", .type = AVMEDIA_TYPE_AUDIO, .id = CODEC_ID_S302M, - .priv_data_size = 0, .decode = s302m_decode_frame, .long_name = NULL_IF_CONFIG_SMALL("SMPTE 302M"), }; diff --git a/libavcodec/vaapi_h264.c b/libavcodec/vaapi_h264.c index 51ebaaf5a0..820568aa25 100644 --- a/libavcodec/vaapi_h264.c +++ b/libavcodec/vaapi_h264.c @@ -341,9 +341,7 @@ AVHWAccel ff_h264_vaapi_hwaccel = { .type = AVMEDIA_TYPE_VIDEO, .id = CODEC_ID_H264, .pix_fmt = PIX_FMT_VAAPI_VLD, - .capabilities = 0, .start_frame = start_frame, .end_frame = end_frame, .decode_slice = decode_slice, - .priv_data_size = 0, }; diff --git a/libavcodec/vaapi_mpeg2.c b/libavcodec/vaapi_mpeg2.c index b608246cb9..6b08ed2efc 100644 --- a/libavcodec/vaapi_mpeg2.c +++ b/libavcodec/vaapi_mpeg2.c @@ -143,9 +143,7 @@ AVHWAccel ff_mpeg2_vaapi_hwaccel = { .type = AVMEDIA_TYPE_VIDEO, .id = CODEC_ID_MPEG2VIDEO, .pix_fmt = PIX_FMT_VAAPI_VLD, - .capabilities = 0, .start_frame = vaapi_mpeg2_start_frame, .end_frame = vaapi_mpeg2_end_frame, .decode_slice = vaapi_mpeg2_decode_slice, - .priv_data_size = 0, }; diff --git a/libavcodec/vaapi_mpeg4.c b/libavcodec/vaapi_mpeg4.c index 1a756cbaf4..915632844e 100644 --- a/libavcodec/vaapi_mpeg4.c +++ b/libavcodec/vaapi_mpeg4.c @@ -155,11 +155,9 @@ AVHWAccel ff_mpeg4_vaapi_hwaccel = { .type = AVMEDIA_TYPE_VIDEO, .id = CODEC_ID_MPEG4, .pix_fmt = PIX_FMT_VAAPI_VLD, - .capabilities = 0, .start_frame = vaapi_mpeg4_start_frame, .end_frame = vaapi_mpeg4_end_frame, .decode_slice = vaapi_mpeg4_decode_slice, - .priv_data_size = 0, }; #endif @@ -169,10 +167,8 @@ AVHWAccel ff_h263_vaapi_hwaccel = { .type = AVMEDIA_TYPE_VIDEO, .id = CODEC_ID_H263, .pix_fmt = PIX_FMT_VAAPI_VLD, - .capabilities = 0, .start_frame = vaapi_mpeg4_start_frame, .end_frame = vaapi_mpeg4_end_frame, .decode_slice = vaapi_mpeg4_decode_slice, - .priv_data_size = 0, }; #endif diff --git a/libavcodec/vaapi_vc1.c b/libavcodec/vaapi_vc1.c index 452b97d25a..d519987ff0 100644 --- a/libavcodec/vaapi_vc1.c +++ b/libavcodec/vaapi_vc1.c @@ -346,11 +346,9 @@ AVHWAccel ff_wmv3_vaapi_hwaccel = { .type = AVMEDIA_TYPE_VIDEO, .id = CODEC_ID_WMV3, .pix_fmt = PIX_FMT_VAAPI_VLD, - .capabilities = 0, .start_frame = vaapi_vc1_start_frame, .end_frame = vaapi_vc1_end_frame, .decode_slice = vaapi_vc1_decode_slice, - .priv_data_size = 0, }; #endif @@ -359,9 +357,7 @@ AVHWAccel ff_vc1_vaapi_hwaccel = { .type = AVMEDIA_TYPE_VIDEO, .id = CODEC_ID_VC1, .pix_fmt = PIX_FMT_VAAPI_VLD, - .capabilities = 0, .start_frame = vaapi_vc1_start_frame, .end_frame = vaapi_vc1_end_frame, .decode_slice = vaapi_vc1_decode_slice, - .priv_data_size = 0, }; diff --git a/libavcodec/vda_h264.c b/libavcodec/vda_h264.c index c9022673fc..b50a4c99a4 100644 --- a/libavcodec/vda_h264.c +++ b/libavcodec/vda_h264.c @@ -102,7 +102,6 @@ AVHWAccel ff_h264_vda_hwaccel = { .type = AVMEDIA_TYPE_VIDEO, .id = CODEC_ID_H264, .pix_fmt = PIX_FMT_VDA_VLD, - .capabilities = 0, .start_frame = start_frame, .decode_slice = decode_slice, .end_frame = end_frame, diff --git a/libavformat/a64.c b/libavformat/a64.c index 4b4981e9a8..3cea50b6c5 100644 --- a/libavformat/a64.c +++ b/libavformat/a64.c @@ -166,7 +166,6 @@ static int a64_write_trailer(struct AVFormatContext *s) AVOutputFormat ff_a64_muxer = { .name = "a64", .long_name = NULL_IF_CONFIG_SMALL("a64 - video for Commodore 64"), - .mime_type = NULL, .extensions = "a64, A64", .priv_data_size = sizeof (A64Context), .video_codec = CODEC_ID_A64_MULTI, diff --git a/libavformat/amr.c b/libavformat/amr.c index b26afa71b7..0f62c7dfa5 100644 --- a/libavformat/amr.c +++ b/libavformat/amr.c @@ -176,7 +176,6 @@ static int amr_read_packet(AVFormatContext *s, AVInputFormat ff_amr_demuxer = { .name = "amr", .long_name = NULL_IF_CONFIG_SMALL("3GPP AMR file format"), - .priv_data_size = 0, /*priv_data_size*/ .read_probe = amr_probe, .read_header = amr_read_header, .read_packet = amr_read_packet, diff --git a/libavformat/mmsh.c b/libavformat/mmsh.c index 50e160f7ba..8a6de322cf 100644 --- a/libavformat/mmsh.c +++ b/libavformat/mmsh.c @@ -366,7 +366,5 @@ URLProtocol ff_mmsh_protocol = { .name = "mmsh", .url_open = mmsh_open, .url_read = mmsh_read, - .url_write = NULL, - .url_seek = NULL, .url_close = mmsh_close, }; diff --git a/libavformat/mpeg.c b/libavformat/mpeg.c index 982903829f..f740a25f89 100644 --- a/libavformat/mpeg.c +++ b/libavformat/mpeg.c @@ -614,7 +614,6 @@ AVInputFormat ff_mpegps_demuxer = { .read_probe = mpegps_probe, .read_header = mpegps_read_header, .read_packet = mpegps_read_packet, - .read_seek = NULL, //mpegps_read_seek, .read_timestamp = mpegps_read_dts, .flags = AVFMT_SHOW_IDS|AVFMT_TS_DISCONT, }; diff --git a/libavformat/rsodec.c b/libavformat/rsodec.c index 0f7588bd8a..cdce7e6743 100644 --- a/libavformat/rsodec.c +++ b/libavformat/rsodec.c @@ -92,11 +92,8 @@ AVInputFormat ff_rso_demuxer = { .name = "rso", .long_name = NULL_IF_CONFIG_SMALL("Lego Mindstorms RSO format"), .extensions = "rso", - .priv_data_size = 0, - .read_probe = NULL, /* no magic value in this format */ .read_header = rso_read_header, .read_packet = rso_read_packet, - .read_close = NULL, .read_seek = pcm_read_seek, .codec_tag = (const AVCodecTag* const []){ff_codec_rso_tags, 0}, }; diff --git a/libavformat/rsoenc.c b/libavformat/rsoenc.c index 338ecf0173..f338d0df4e 100644 --- a/libavformat/rsoenc.c +++ b/libavformat/rsoenc.c @@ -104,7 +104,6 @@ AVOutputFormat ff_rso_muxer = { .name = "rso", .long_name = NULL_IF_CONFIG_SMALL("Lego Mindstorms RSO format"), .extensions = "rso", - .priv_data_size = 0, .audio_codec = CODEC_ID_PCM_U8, .video_codec = CODEC_ID_NONE, .write_header = rso_write_header, diff --git a/libavformat/rtpdec_mpeg4.c b/libavformat/rtpdec_mpeg4.c index 65071bd4d3..b143c1aee8 100644 --- a/libavformat/rtpdec_mpeg4.c +++ b/libavformat/rtpdec_mpeg4.c @@ -234,9 +234,6 @@ RTPDynamicProtocolHandler ff_mp4v_es_dynamic_handler = { .codec_type = AVMEDIA_TYPE_VIDEO, .codec_id = CODEC_ID_MPEG4, .parse_sdp_a_line = parse_sdp_line, - .alloc = NULL, - .free = NULL, - .parse_packet = NULL }; RTPDynamicProtocolHandler ff_mpeg4_generic_dynamic_handler = { diff --git a/libavformat/tls.c b/libavformat/tls.c index 339b799322..26f5ee5106 100644 --- a/libavformat/tls.c +++ b/libavformat/tls.c @@ -246,7 +246,6 @@ URLProtocol ff_tls_protocol = { .url_open = tls_open, .url_read = tls_read, .url_write = tls_write, - .url_seek = NULL, .url_close = tls_close, .priv_data_size = sizeof(TLSContext), }; From 60084a1723ee7cd5c79a5a7efc1dee82c25cbe56 Mon Sep 17 00:00:00 2001 From: Mans Rullgard Date: Mon, 28 Nov 2011 14:21:48 +0000 Subject: [PATCH 5/8] timer: fix misspelling of "decicycles" Signed-off-by: Mans Rullgard --- libavutil/timer.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavutil/timer.h b/libavutil/timer.h index 341d508c44..6333cc61ce 100644 --- a/libavutil/timer.h +++ b/libavutil/timer.h @@ -61,7 +61,7 @@ tend= AV_READ_TIME();\ }else\ tskip_count++;\ if(((tcount+tskip_count)&(tcount+tskip_count-1))==0){\ - av_log(NULL, AV_LOG_ERROR, "%"PRIu64" dezicycles in %s, %d runs, %d skips\n",\ + av_log(NULL, AV_LOG_ERROR, "%"PRIu64" decicycles in %s, %d runs, %d skips\n",\ tsum*10/tcount, id, tcount, tskip_count);\ }\ } From b94a3b288e3f321e3eba7af099b9bbf01a6e2e74 Mon Sep 17 00:00:00 2001 From: Mans Rullgard Date: Mon, 28 Nov 2011 16:47:03 +0000 Subject: [PATCH 6/8] APIchanges: fill in some blanks Signed-off-by: Mans Rullgard --- doc/APIchanges | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/doc/APIchanges b/doc/APIchanges index 8efee0c213..6c00ee9a28 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -13,14 +13,14 @@ libavutil: 2011-04-18 API changes, most recent first: -2011-xx-xx - xxxxxxx - lavu 51.18.0 +2011-11-23 - bbb46f3 - lavu 51.18.0 Add av_samples_get_buffer_size(), av_samples_fill_arrays(), and av_samples_alloc(), to samplefmt.h. -2011-xx-xx - xxxxxxx - lavu 51.17.0 +2011-11-23 - 8889cc4 - lavu 51.17.0 Add planar sample formats and av_sample_fmt_is_planar() to samplefmt.h. -2011-xx-xx - xxxxxxx - lavc 53.21.0 +2011-11-19 - f3a29b7 - lavc 53.21.0 Move some AVCodecContext fields to a new private struct, AVCodecInternal, which is accessed from a new field, AVCodecContext.internal. - fields moved: @@ -28,6 +28,9 @@ API changes, most recent first: AVCodecContext.internal_buffer_count --> AVCodecInternal.buffer_count AVCodecContext.is_copy --> AVCodecInternal.is_copy +2011-11-16 - 6270671 - lavu 51.16.0 + Add av_timegm() + 2011-11-13 - lavf 53.15.0 New interrupt callback API, allowing per-AVFormatContext/AVIOContext interrupt callbacks. @@ -38,9 +41,6 @@ API changes, most recent first: This will allow passing AVOptions to protocols after lavf 54.0. -2011-11-xx - xxxxxxx - lavu 51.16.0 - Add av_timegm() - 2011-11-06 - ba04ecf - lavu 51.14.0 Add av_strcasecmp() and av_strncasecmp() to avstring.h. From a27805189ba505834c74ec72edc5fddf18f5cfa9 Mon Sep 17 00:00:00 2001 From: Alex Converse Date: Sun, 27 Nov 2011 16:17:13 -0800 Subject: [PATCH 7/8] txd: Fix order of operations. --- libavcodec/txd.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libavcodec/txd.c b/libavcodec/txd.c index 74ffff66b3..734062aca6 100644 --- a/libavcodec/txd.c +++ b/libavcodec/txd.c @@ -108,7 +108,8 @@ static int txd_decode_frame(AVCodecContext *avctx, void *data, int *data_size, } else if (depth == 16) { switch (d3d_format) { case 0: - if (!flags&1) goto unsupported; + if (!(flags & 1)) + goto unsupported; case FF_S3TC_DXT1: ff_decode_dxt1(cur, ptr, w, h, stride); break; From ac47e014bbaf5163871a8beb7522015e0bc27615 Mon Sep 17 00:00:00 2001 From: Alex Converse Date: Mon, 28 Nov 2011 00:48:53 -0800 Subject: [PATCH 8/8] adtsenc: Check frame size. Inspired by work from: Michael Niedermayer . Signed-off-by: Alex Converse --- libavformat/adtsenc.c | 16 ++++++++++++++-- libavformat/mpegtsenc.c | 9 +++++++-- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/libavformat/adtsenc.c b/libavformat/adtsenc.c index ce002fe4db..55fece5dd6 100644 --- a/libavformat/adtsenc.c +++ b/libavformat/adtsenc.c @@ -27,6 +27,8 @@ #include "avformat.h" #include "adts.h" +#define ADTS_MAX_FRAME_BYTES ((1 << 13) - 1) + int ff_adts_decode_extradata(AVFormatContext *s, ADTSContext *adts, uint8_t *buf, int size) { GetBitContext gb; @@ -93,6 +95,13 @@ int ff_adts_write_frame_header(ADTSContext *ctx, { PutBitContext pb; + unsigned full_frame_size = (unsigned)ADTS_HEADER_SIZE + size + pce_size; + if (full_frame_size > ADTS_MAX_FRAME_BYTES) { + av_log(NULL, AV_LOG_ERROR, "ADTS frame size too large: %u (max %d)\n", + full_frame_size, ADTS_MAX_FRAME_BYTES); + return AVERROR_INVALIDDATA; + } + init_put_bits(&pb, buf, ADTS_HEADER_SIZE); /* adts_fixed_header */ @@ -110,7 +119,7 @@ int ff_adts_write_frame_header(ADTSContext *ctx, /* adts_variable_header */ put_bits(&pb, 1, 0); /* copyright_identification_bit */ put_bits(&pb, 1, 0); /* copyright_identification_start */ - put_bits(&pb, 13, ADTS_HEADER_SIZE + size + pce_size); /* aac_frame_length */ + put_bits(&pb, 13, full_frame_size); /* aac_frame_length */ put_bits(&pb, 11, 0x7ff); /* adts_buffer_fullness */ put_bits(&pb, 2, 0); /* number_of_raw_data_blocks_in_frame */ @@ -128,7 +137,10 @@ static int adts_write_packet(AVFormatContext *s, AVPacket *pkt) if (!pkt->size) return 0; if (adts->write_adts) { - ff_adts_write_frame_header(adts, buf, pkt->size, adts->pce_size); + int err = ff_adts_write_frame_header(adts, buf, pkt->size, + adts->pce_size); + if (err < 0) + return err; avio_write(pb, buf, ADTS_HEADER_SIZE); if (adts->pce_size) { avio_write(pb, adts->pce_data, adts->pce_size); diff --git a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c index 9f45f13247..f28b719a29 100644 --- a/libavformat/mpegtsenc.c +++ b/libavformat/mpegtsenc.c @@ -971,7 +971,7 @@ static int mpegts_write_packet(AVFormatContext *s, AVPacket *pkt) return -1; if ((AV_RB16(pkt->data) & 0xfff0) != 0xfff0) { ADTSContext *adts = ts_st->adts; - int new_size; + int new_size, err; if (!adts) { av_log(s, AV_LOG_ERROR, "aac bitstream not in adts format " "and extradata missing\n"); @@ -983,7 +983,12 @@ static int mpegts_write_packet(AVFormatContext *s, AVPacket *pkt) data = av_malloc(new_size); if (!data) return AVERROR(ENOMEM); - ff_adts_write_frame_header(adts, data, pkt->size, adts->pce_size); + err = ff_adts_write_frame_header(adts, data, pkt->size, + adts->pce_size); + if (err < 0) { + av_free(data); + return err; + } if (adts->pce_size) { memcpy(data+ADTS_HEADER_SIZE, adts->pce_data, adts->pce_size); adts->pce_size = 0;