+ if (in->flags & AV_PKT_FLAG_UNCODED_FRAME) {
+ pkt = in;
+ } else {
+ /* We don't own in, so we have to make sure not to modify it.
+ * The following avoids copying in's data unnecessarily.
+ * Copying side data is unavoidable as a bitstream filter
+ * may change it, e.g. free it on errors. */
+ pkt->buf = NULL;
+ pkt->data = in->data;
+ pkt->size = in->size;
+ ret = av_packet_copy_props(pkt, in);
+ if (ret < 0)
+ return ret;
+ if (in->buf) {
+ pkt->buf = av_buffer_ref(in->buf);
+ if (!pkt->buf) {
+ ret = AVERROR(ENOMEM);
+ goto fail;
+ }
+ }
+ }
+
+ ret = prepare_input_packet(s, pkt);
+ if (ret < 0)
+ goto fail;
+