| 105 | } |
| 106 | |
| 107 | int avcodec_parameters_copy(AVCodecParameters *dst, const AVCodecParameters *src) |
| 108 | { |
| 109 | int ret; |
| 110 | |
| 111 | codec_parameters_reset(dst); |
| 112 | memcpy(dst, src, sizeof(*dst)); |
| 113 | |
| 114 | dst->ch_layout = (AVChannelLayout){0}; |
| 115 | dst->extradata = NULL; |
| 116 | dst->extradata_size = 0; |
| 117 | dst->coded_side_data = NULL; |
| 118 | dst->nb_coded_side_data = 0; |
| 119 | if (src->extradata) { |
| 120 | dst->extradata = av_mallocz(src->extradata_size + AV_INPUT_BUFFER_PADDING_SIZE); |
| 121 | if (!dst->extradata) |
| 122 | return AVERROR(ENOMEM); |
| 123 | memcpy(dst->extradata, src->extradata, src->extradata_size); |
| 124 | dst->extradata_size = src->extradata_size; |
| 125 | } |
| 126 | ret = codec_parameters_copy_side_data(&dst->coded_side_data, &dst->nb_coded_side_data, |
| 127 | src->coded_side_data, src->nb_coded_side_data); |
| 128 | if (ret < 0) |
| 129 | return ret; |
| 130 | |
| 131 | ret = av_channel_layout_copy(&dst->ch_layout, &src->ch_layout); |
| 132 | if (ret < 0) |
| 133 | return ret; |
| 134 | |
| 135 | return 0; |
| 136 | } |
| 137 | |
| 138 | int avcodec_parameters_from_context(AVCodecParameters *par, |
| 139 | const AVCodecContext *codec) |
no test coverage detected