| 136 | } |
| 137 | |
| 138 | int avcodec_parameters_from_context(AVCodecParameters *par, |
| 139 | const AVCodecContext *codec) |
| 140 | { |
| 141 | int ret; |
| 142 | |
| 143 | codec_parameters_reset(par); |
| 144 | |
| 145 | par->codec_type = codec->codec_type; |
| 146 | par->codec_id = codec->codec_id; |
| 147 | par->codec_tag = codec->codec_tag; |
| 148 | |
| 149 | par->bit_rate = codec->bit_rate; |
| 150 | par->bits_per_coded_sample = codec->bits_per_coded_sample; |
| 151 | par->bits_per_raw_sample = codec->bits_per_raw_sample; |
| 152 | par->profile = codec->profile; |
| 153 | par->level = codec->level; |
| 154 | |
| 155 | switch (par->codec_type) { |
| 156 | case AVMEDIA_TYPE_VIDEO: |
| 157 | par->format = codec->pix_fmt; |
| 158 | par->width = codec->width; |
| 159 | par->height = codec->height; |
| 160 | par->field_order = codec->field_order; |
| 161 | par->color_range = codec->color_range; |
| 162 | par->color_primaries = codec->color_primaries; |
| 163 | par->color_trc = codec->color_trc; |
| 164 | par->color_space = codec->colorspace; |
| 165 | par->chroma_location = codec->chroma_sample_location; |
| 166 | par->sample_aspect_ratio = codec->sample_aspect_ratio; |
| 167 | par->video_delay = codec->has_b_frames; |
| 168 | par->framerate = codec->framerate; |
| 169 | par->alpha_mode = codec->alpha_mode; |
| 170 | break; |
| 171 | case AVMEDIA_TYPE_AUDIO: |
| 172 | par->format = codec->sample_fmt; |
| 173 | ret = av_channel_layout_copy(&par->ch_layout, &codec->ch_layout); |
| 174 | if (ret < 0) |
| 175 | return ret; |
| 176 | par->sample_rate = codec->sample_rate; |
| 177 | par->block_align = codec->block_align; |
| 178 | par->frame_size = codec->frame_size; |
| 179 | par->initial_padding = codec->initial_padding; |
| 180 | par->trailing_padding = codec->trailing_padding; |
| 181 | par->seek_preroll = codec->seek_preroll; |
| 182 | break; |
| 183 | case AVMEDIA_TYPE_SUBTITLE: |
| 184 | par->width = codec->width; |
| 185 | par->height = codec->height; |
| 186 | break; |
| 187 | } |
| 188 | |
| 189 | if (codec->extradata) { |
| 190 | par->extradata = av_mallocz(codec->extradata_size + AV_INPUT_BUFFER_PADDING_SIZE); |
| 191 | if (!par->extradata) |
| 192 | return AVERROR(ENOMEM); |
| 193 | memcpy(par->extradata, codec->extradata, codec->extradata_size); |
| 194 | par->extradata_size = codec->extradata_size; |
| 195 | } |
no test coverage detected