--- /dev/null
+--- a/libavcodec/libx265.c
++++ b/libavcodec/libx265.c
+@@ -646,7 +646,13 @@
+ {
+ libx265Context *ctx = avctx->priv_data;
+ x265_picture x265pic;
+- x265_picture x265pic_out = { 0 };
++#if X265_BUILD >= 210
++ x265_picture x265pic_layers_out[MAX_SCALABLE_LAYERS];
++ x265_picture* x265pic_lyrptr_out[MAX_SCALABLE_LAYERS];
++#else
++ x265_picture x265pic_solo_out = { 0 };
++#endif
++ x265_picture* x265pic_out;
+ x265_nal *nal;
+ x265_sei *sei;
+ uint8_t *dst;
+@@ -764,8 +770,16 @@
+ }
+ }
+
++#if X265_BUILD >= 210
++ for (i = 0; i < MAX_SCALABLE_LAYERS; i++)
++ x265pic_lyrptr_out[i] = &x265pic_layers_out[i];
++
++ ret = ctx->api->encoder_encode(ctx->encoder, &nal, &nnal,
++ pic ? &x265pic : NULL, x265pic_lyrptr_out);
++#else
+ ret = ctx->api->encoder_encode(ctx->encoder, &nal, &nnal,
+- pic ? &x265pic : NULL, &x265pic_out);
++ pic ? &x265pic : NULL, &x265pic_solo_out);
++#endif
+
+ for (i = 0; i < sei->numPayloads; i++)
+ av_free(sei->payloads[i].payload);
+@@ -795,10 +809,16 @@
+ pkt->flags |= AV_PKT_FLAG_KEY;
+ }
+
+- pkt->pts = x265pic_out.pts;
+- pkt->dts = x265pic_out.dts;
++#if X265_BUILD >= 210
++ x265pic_out = x265pic_lyrptr_out[0];
++#else
++ x265pic_out = &x265pic_solo_out;
++#endif
++
++ pkt->pts = x265pic_out->pts;
++ pkt->dts = x265pic_out->dts;
+
+- switch (x265pic_out.sliceType) {
++ switch (x265pic_out->sliceType) {
+ case X265_TYPE_IDR:
+ case X265_TYPE_I:
+ pict_type = AV_PICTURE_TYPE_I;
+@@ -816,16 +836,16 @@
+ }
+
+ #if X265_BUILD >= 130
+- if (x265pic_out.sliceType == X265_TYPE_B)
++ if (x265pic_out->sliceType == X265_TYPE_B)
+ #else
+- if (x265pic_out.frameData.sliceType == 'b')
++ if (x265pic_out->frameData.sliceType == 'b')
+ #endif
+ pkt->flags |= AV_PKT_FLAG_DISPOSABLE;
+
+- ff_side_data_set_encoder_stats(pkt, x265pic_out.frameData.qp * FF_QP2LAMBDA, NULL, 0, pict_type);
++ ff_side_data_set_encoder_stats(pkt, x265pic_out->frameData.qp * FF_QP2LAMBDA, NULL, 0, pict_type);
+
+- if (x265pic_out.userData) {
+- int idx = (int)(intptr_t)x265pic_out.userData - 1;
++ if (x265pic_out->userData) {
++ int idx = (int)(intptr_t)x265pic_out->userData - 1;
+ ReorderedData *rd = &ctx->rd[idx];
+
+ pkt->duration = rd->duration;
--- /dev/null
+--- /dev/null 2020-07-19 09:07:01.788494015 +0300
++++ ./multilib.sh 2020-08-02 02:34:58.444933214 +0300
+@@ -0,0 +1,54 @@
++#!/bin/sh
++
++mkdir -p 8bit 10bit 12bit
++
++
++cd 12bit
++if [ $(uname -m) == 'x86_64' ]; then
++ # 64-bit stuff here
++cmake ../source -DHIGH_BIT_DEPTH=ON -DENABLE_ASSEMBLY=ON -DEXPORT_C_API=OFF -DENABLE_SHARED=OFF -DENABLE_CLI=OFF -DMAIN12=ON
++else
++ # 32-bit stuff here
++cmake ../source -DHIGH_BIT_DEPTH=ON -DENABLE_ASSEMBLY=OFF -DEXPORT_C_API=OFF -DENABLE_SHARED=OFF -DENABLE_CLI=OFF -DMAIN12=ON
++fi
++make
++
++cd ../10bit
++if [ $(uname -m) == 'x86_64' ]; then
++ # 64-bit stuff here
++cmake ../source -DHIGH_BIT_DEPTH=ON -DENABLE_ASSEMBLY=ON -DEXPORT_C_API=OFF -DENABLE_SHARED=OFF -DENABLE_CLI=OFF
++else
++ # 32-bit stuff here
++cmake ../source -DHIGH_BIT_DEPTH=ON -DENABLE_ASSEMBLY=OFF -DEXPORT_C_API=OFF -DENABLE_SHARED=OFF -DENABLE_CLI=OFF
++fi
++make
++
++cd ../8bit
++ln -sf ../10bit/libx265.a libx265_main10.a
++ln -sf ../12bit/libx265.a libx265_main12.a
++cmake ../source -DEXTRA_LIB="x265_main10.a;x265_main12.a" -DENABLE_SHARED=OFF -DEXTRA_LINK_FLAGS=-L. -DLINKED_10BIT=ON -DLINKED_12BIT=ON -DENABLE_CLI=OFF
++make
++
++# rename the 8bit library, then combine all three into libx265.a
++mv libx265.a libx265_main.a
++
++uname=`uname`
++if [ "$uname" = "Linux" ]
++then
++
++# On Linux, we use GNU ar to combine the static libraries together
++ar -M <<EOF
++CREATE libx265.a
++ADDLIB libx265_main.a
++ADDLIB libx265_main10.a
++ADDLIB libx265_main12.a
++SAVE
++END
++EOF
++
++else
++
++# Mac/BSD libtool
++libtool -static -o libx265.a libx265_main.a libx265_main10.a libx265_main12.a 2>/dev/null
++
++fi