Acked-by: Christophe Fergeau <cfergeau@xxxxxxxxxx> On Tue, Mar 01, 2016 at 04:53:48PM +0100, Francois Gouget wrote: > Signed-off-by: Francois Gouget <fgouget@xxxxxxxxxxxxxxx> > --- > server/gstreamer-encoder.c | 17 ++++++++++++++++- > server/reds.c | 4 +++- > 2 files changed, 19 insertions(+), 2 deletions(-) > > diff --git a/server/gstreamer-encoder.c b/server/gstreamer-encoder.c > index 0a63758..f3fef41 100644 > --- a/server/gstreamer-encoder.c > +++ b/server/gstreamer-encoder.c > @@ -269,6 +269,15 @@ static gboolean create_pipeline(SpiceGstEncoder *encoder) > gstenc = g_strdup_printf("vp8enc end-usage=cbr min-quantizer=10 resize-allowed=true error-resilient=true lag-in-frames=0 deadline=1 cpu-used=4 threads=%d token-partitions=%d", threads, parts); > break; > } > + case SPICE_VIDEO_CODEC_TYPE_H264: > + /* - Set tune and sliced-threads to ensure a zero-frame latency > + * - qp-min ensures the bitrate does not get needlessly high. > + * - Set speed-preset to get realtime speed. > + * - Set intra-refresh to get more uniform compressed frame sizes, > + * thus helping with streaming. > + */ > + gstenc = g_strdup("x264enc byte-stream=true aud=true qp-min=15 tune=4 sliced-threads=true speed-preset=ultrafast intra-refresh=true"); > + break; > default: > /* gstreamer_encoder_new() should have rejected this codec type */ > spice_warning("unsupported codec type %d", encoder->base.codec_type); > @@ -321,6 +330,11 @@ static gboolean configure_pipeline(SpiceGstEncoder *encoder, > "target-bitrate", encoder->bit_rate, > NULL); > break; > + case SPICE_VIDEO_CODEC_TYPE_H264: > + g_object_set(G_OBJECT(encoder->gstenc), > + "bitrate", encoder->bit_rate / 1024, > + NULL); > + break; > default: > /* gstreamer_encoder_new() should have rejected this codec type */ > spice_warning("unsupported codec type %d", encoder->base.codec_type); > @@ -703,7 +717,8 @@ VideoEncoder *gstreamer_encoder_new(SpiceVideoCodecType codec_type, > bitmap_unref_t bitmap_unref) > { > spice_return_val_if_fail(codec_type == SPICE_VIDEO_CODEC_TYPE_MJPEG || > - codec_type == SPICE_VIDEO_CODEC_TYPE_VP8, NULL); > + codec_type == SPICE_VIDEO_CODEC_TYPE_VP8 || > + codec_type == SPICE_VIDEO_CODEC_TYPE_H264, NULL); > > GError *err = NULL; > if (!gst_init_check(NULL, NULL, &err)) { > diff --git a/server/reds.c b/server/reds.c > index de98509..a58d40d 100644 > --- a/server/reds.c > +++ b/server/reds.c > @@ -3427,7 +3427,7 @@ err: > static const char default_renderer[] = "sw"; > > #define RED_MAX_VIDEO_CODECS 8 > -static const char default_video_codecs[] = "spice:mjpeg;gstreamer:mjpeg;gstreamer:vp8"; > +static const char default_video_codecs[] = "spice:mjpeg;gstreamer:mjpeg;gstreamer:h264;gstreamer:vp8"; > > /* new interface */ > SPICE_GNUC_VISIBLE SpiceServer *spice_server_new(void) > @@ -3516,12 +3516,14 @@ static new_video_encoder_t video_encoder_procs[] = { > static const EnumNames video_codec_names[] = { > {SPICE_VIDEO_CODEC_TYPE_MJPEG, "mjpeg"}, > {SPICE_VIDEO_CODEC_TYPE_VP8, "vp8"}, > + {SPICE_VIDEO_CODEC_TYPE_H264, "h264"}, > {0, NULL}, > }; > > static int video_codec_caps[] = { > SPICE_DISPLAY_CAP_CODEC_MJPEG, > SPICE_DISPLAY_CAP_CODEC_VP8, > + SPICE_DISPLAY_CAP_CODEC_H264, > }; > > > -- > 2.7.0 > > _______________________________________________ > Spice-devel mailing list > Spice-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/spice-devel
Attachment:
signature.asc
Description: PGP signature
_______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel