Compare commits

..

1 Commits

Author SHA1 Message Date
svcmobrel-release
740ff74531 Updating prebuilts and/or headers
6bafa48f47ad43d33ee446cf86f2b1da134f7868 - nvgstapps_src/nvgst_sample_apps/nvgstplayer-1.0/nvgst_asound_common.h
c028fa403772288daf002520356e8e18cce5cb06 - nvgstapps_src/nvgst_sample_apps/nvgstplayer-1.0/nvgstplayer.h
33a285339d714d5546cddb92a710e418853470aa - nvgstapps_src/nvgst_sample_apps/nvgstplayer-1.0/nvgst_asound_common.c
9b47978b5f3b6672dd4d6ad5ebe80c9b945a7eba - nvgstapps_src/nvgst_sample_apps/nvgstplayer-1.0/nvgst_x11_common.c
599544266262509705c60ca9e8d2c8ade3bdfc30 - nvgstapps_src/nvgst_sample_apps/nvgstplayer-1.0/nvgstplayer.c
aaafd7fd4c0214a52bf73dd2a0ba0af08c675b85 - nvgstapps_src/nvgst_sample_apps/nvgstplayer-1.0/nvgst_x11_common.h
8531d3b2fb38ae84efeaadf6cc177e1e2b07a90b - nvgstapps_src/nvgst_sample_apps/nvgstcapture-1.0/nvgstcapture.h
39d7bace9939d38f221edd9f87dc8e8dab2c2365 - nvgstapps_src/nvgst_sample_apps/nvgstcapture-1.0/nvgstcapture.c
a5bdf6935960973677a005d9d28a04c023f5ec6f - nvgstapps_src/nvgst_sample_apps/nvgstcapture-1.0/nvgst_x11_common.c
87556b6e7da0ec3865546f10b7a58959cd8c6bfc - nvgstapps_src/nvgst_sample_apps/nvgstcapture-1.0/nvgst_x11_common.h

Change-Id: I7f51606e0777d688ea592cc5066a8a58f0c212a9
2024-09-06 00:00:49 -07:00
4 changed files with 116 additions and 30 deletions

View File

@@ -1,12 +1,12 @@
Updating prebuilts and/or headers
9b47978b5f3b6672dd4d6ad5ebe80c9b945a7eba - nvgstapps_src/nvgst_sample_apps/nvgstplayer-1.0/nvgst_x11_common.c
33a285339d714d5546cddb92a710e418853470aa - nvgstapps_src/nvgst_sample_apps/nvgstplayer-1.0/nvgst_asound_common.c
6bafa48f47ad43d33ee446cf86f2b1da134f7868 - nvgstapps_src/nvgst_sample_apps/nvgstplayer-1.0/nvgst_asound_common.h
c028fa403772288daf002520356e8e18cce5cb06 - nvgstapps_src/nvgst_sample_apps/nvgstplayer-1.0/nvgstplayer.h
33a285339d714d5546cddb92a710e418853470aa - nvgstapps_src/nvgst_sample_apps/nvgstplayer-1.0/nvgst_asound_common.c
9b47978b5f3b6672dd4d6ad5ebe80c9b945a7eba - nvgstapps_src/nvgst_sample_apps/nvgstplayer-1.0/nvgst_x11_common.c
599544266262509705c60ca9e8d2c8ade3bdfc30 - nvgstapps_src/nvgst_sample_apps/nvgstplayer-1.0/nvgstplayer.c
aaafd7fd4c0214a52bf73dd2a0ba0af08c675b85 - nvgstapps_src/nvgst_sample_apps/nvgstplayer-1.0/nvgst_x11_common.h
c028fa403772288daf002520356e8e18cce5cb06 - nvgstapps_src/nvgst_sample_apps/nvgstplayer-1.0/nvgstplayer.h
8531d3b2fb38ae84efeaadf6cc177e1e2b07a90b - nvgstapps_src/nvgst_sample_apps/nvgstcapture-1.0/nvgstcapture.h
39d7bace9939d38f221edd9f87dc8e8dab2c2365 - nvgstapps_src/nvgst_sample_apps/nvgstcapture-1.0/nvgstcapture.c
a5bdf6935960973677a005d9d28a04c023f5ec6f - nvgstapps_src/nvgst_sample_apps/nvgstcapture-1.0/nvgst_x11_common.c
6380a3e21b43fdc01c6de7d3934c602af38c3d12 - nvgstapps_src/nvgst_sample_apps/nvgstcapture-1.0/nvgstcapture.c
87556b6e7da0ec3865546f10b7a58959cd8c6bfc - nvgstapps_src/nvgst_sample_apps/nvgstcapture-1.0/nvgst_x11_common.h
4048ce41fcd68ca284bf6146d2d32608fe69ca8a - nvgstapps_src/nvgst_sample_apps/nvgstcapture-1.0/nvgstcapture.h

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2014-2021, NVIDIA CORPORATION. All rights reserved.
* Copyright (c) 2014-2023, NVIDIA CORPORATION. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
@@ -1481,6 +1481,10 @@ set_encoder_bitrate (guint bitrate)
else if (app->capres.vid_res_index >= VR_3840x2160)
bitrate = NVGST_DEFAULT_2160P_ENCODER_BITRATE;
}
if (app->encset.video_enc == FORMAT_H264_SW)
{
bitrate /= 1000; // x264enc requires kbits/sec
}
app->encset.bitrate = bitrate;
g_print ("bitrate = %u\n", app->encset.bitrate);
g_object_set (G_OBJECT (app->ele.vid_enc), "bitrate", app->encset.bitrate,
@@ -1621,16 +1625,25 @@ get_video_encoder (GstElement ** vencoder)
*vencoder = gst_element_factory_make (NVGST_PRIMARY_V4L2_VP9_VENC, NULL);
set_encoder_bitrate (app->encset.bitrate);
break;
case FORMAT_H264_SW:
*vencoder = gst_element_factory_make(NVGST_SW_H264_ENC, NULL);
set_encoder_bitrate(app->encset.bitrate);
break;
default:
*vencoder = gst_element_factory_make (NVGST_PRIMARY_V4L2_H264_VENC, NULL);
break;
}
g_object_set (*vencoder, "control-rate", app->encset.controlrate, NULL);
if (app->encset.video_enc != FORMAT_H264_SW)
{
g_object_set(*vencoder, "control-rate", app->encset.controlrate, NULL);
g_print("Encoder control-rate = %u\n", app->encset.controlrate);
}
if (app->encset.enabletwopassCBR)
{
g_object_set (*vencoder, "EnableTwopassCBR", app->encset.enabletwopassCBR, NULL);
g_print ("Encoder control-rate = %u\n", app->encset.controlrate);
g_print ("Encoder EnableTwopassCBR = %d\n", app->encset.enabletwopassCBR);
g_print("Encoder EnableTwopassCBR = %d\n", app->encset.enabletwopassCBR);
}
if (!(*vencoder)) {
app->return_value = -1;
@@ -1646,7 +1659,10 @@ get_parser (GstElement ** parser)
{
switch (app->encset.video_enc) {
case FORMAT_H264_HW:
*parser = gst_element_factory_make (NVGST_PRIMARY_H264_PARSER, NULL);
*parser = gst_element_factory_make(NVGST_PRIMARY_H264_PARSER, NULL);
break;
case FORMAT_H264_SW:
*parser = gst_element_factory_make(NVGST_PRIMARY_H264_PARSER, NULL);
break;
case FORMAT_H265_HW:
*parser = gst_element_factory_make (NVGST_PRIMARY_H265_PARSER, NULL);
@@ -2743,8 +2759,11 @@ create_video_scaling_bin (void)
"width", G_TYPE_INT, app->capres.video_cap_width,
"height", G_TYPE_INT, app->capres.video_cap_height, NULL);
feature = gst_caps_features_new ("memory:NVMM", NULL);
gst_caps_set_features (caps, 0, feature);
if (app->encset.video_enc != FORMAT_H264_SW)
{
feature = gst_caps_features_new("memory:NVMM", NULL);
gst_caps_set_features (caps, 0, feature);
}
/* Set capture caps on capture filter */
g_object_set (app->ele.svc_vidvconv_out_filter, "caps", caps, NULL);
@@ -2875,6 +2894,10 @@ rtsp_video_stream_new (GObject * media)
case FORMAT_VP9_HW:
appsrc_caps = gst_caps_from_string ("video/x-vp9");
break;
case FORMAT_H264_SW:
appsrc_caps =
gst_caps_from_string("video/x-h264, stream-format=byte-stream, alignment=au");
break;
default:
appsrc_caps = gst_caps_from_string ("video/x-h264");
break;
@@ -3014,8 +3037,12 @@ create_streaming_file_src_bin (void)
gst_caps_new_simple ("video/x-raw", "format", G_TYPE_STRING, "I420",
"width", G_TYPE_INT, width, "height", G_TYPE_INT, height, NULL);
feature = gst_caps_features_new ("memory:NVMM", NULL);
gst_caps_set_features (caps, 0, feature);
if (app->encset.video_enc != FORMAT_H264_SW)
{
feature = gst_caps_features_new("memory:NVMM", NULL);
gst_caps_set_features (caps, 0, feature);
}
g_object_set (app->ele.cap_filter, "caps", caps, NULL);
gst_caps_unref (caps);
@@ -3083,6 +3110,11 @@ create_streaming_enc_bin (void)
case FORMAT_VP9_HW:
appsink_caps = gst_caps_from_string ("video/x-vp9");
break;
case FORMAT_H264_SW:
appsink_caps =
gst_caps_from_string
("video/x-h264, stream-format=byte-stream, alignment=au");
break;
default:
appsink_caps = gst_caps_from_string ("video/x-h264");
break;
@@ -3145,13 +3177,32 @@ create_vid_enc_bin (void)
caps =
gst_caps_new_simple ("video/x-raw","format", G_TYPE_STRING, "NV12", NULL);
feature = gst_caps_features_new ("memory:NVMM", NULL);
gst_caps_set_features (caps, 0, feature);
if (app->encset.video_enc != FORMAT_H264_SW) {
feature = gst_caps_features_new("memory:NVMM", NULL);
gst_caps_set_features(caps, 0, feature);
}
g_object_set (G_OBJECT (app->ele.vid_enc_cap_filter), "caps", caps, NULL);
gst_caps_unref (caps);
}
if ((app->cam_src == NV_CAM_SRC_CSI) && (app->encset.video_enc == FORMAT_H264_SW))
{
app->ele.vid_enc_conv = gst_element_factory_make("nvvidconv", "nvvidconv");
if (!app->ele.vid_enc_conv)
{
NVGST_ERROR_MESSAGE("nvvidconv element could not be created.\n");
goto fail;
}
app->ele.vid_enc_cap_filter =
gst_element_factory_make(NVGST_DEFAULT_CAPTURE_FILTER, NULL);
caps =
gst_caps_new_simple("video/x-raw", "format", G_TYPE_STRING, "NV12", NULL);
g_object_set(G_OBJECT(app->ele.vid_enc_cap_filter), "caps", caps, NULL);
gst_caps_unref(caps);
}
app->ele.video_sink =
gst_element_factory_make (NVGST_DEFAULT_VENC_SINK, NULL);
if (!app->ele.video_sink) {
@@ -3193,8 +3244,25 @@ create_vid_enc_bin (void)
}
else
{
gst_bin_add_many (GST_BIN (app->ele.vid_bin), app->ele.vid_enc,
app->ele.parser, app->ele.muxer, app->ele.video_sink, NULL);
if (app->encset.video_enc != FORMAT_H264_SW) {
gst_bin_add_many(GST_BIN(app->ele.vid_bin), app->ele.vid_enc,
app->ele.parser, app->ele.muxer, app->ele.video_sink, NULL);
}
else {
gst_bin_add_many(GST_BIN(app->ele.vid_bin), app->ele.vid_enc_conv,
app->ele.vid_enc_cap_filter, app->ele.vid_enc,
app->ele.parser, app->ele.muxer, app->ele.video_sink, NULL);
if ((gst_element_link(app->ele.vid_enc_conv, app->ele.vid_enc_cap_filter)) != TRUE) {
NVGST_ERROR_MESSAGE("Elements could not link nvvidconv & caps filter\n");
goto fail;
}
if ((gst_element_link(app->ele.vid_enc_cap_filter, app->ele.vid_enc)) != TRUE) {
NVGST_ERROR_MESSAGE("Elements could not link caps filter & encoder \n");
goto fail;
}
}
}
if ((gst_element_link (app->ele.vid_enc, app->ele.parser)) != TRUE) {
@@ -3204,7 +3272,6 @@ create_vid_enc_bin (void)
srcpad = gst_element_get_static_pad (app->ele.parser, "src");
if (app->muxer_is_identity)
{
sinkpad = gst_element_get_static_pad (app->ele.muxer, "sink");
@@ -3230,7 +3297,7 @@ create_vid_enc_bin (void)
goto fail;
}
if(app->cam_src != NV_CAM_SRC_CSI)
if((app->cam_src != NV_CAM_SRC_CSI) || (app->encset.video_enc == FORMAT_H264_SW))
{
pad = gst_element_get_static_pad (app->ele.vid_enc_conv, "sink");
if (!pad) {
@@ -4099,14 +4166,14 @@ nvgst_handle_xevents ()
static gpointer
nvgst_x_event_thread (gpointer data)
{
gint64 end_time;
g_mutex_lock (app->lock);
while (app->disp.window) {
nvgst_handle_xevents ();
end_time = g_get_monotonic_time () + 1;
g_cond_wait_until (app->x_cond, app->lock, end_time);
g_mutex_unlock(app->lock);
g_usleep(G_USEC_PER_SEC / 20);
g_mutex_lock(app->lock);
}
g_mutex_unlock (app->lock);
g_mutex_unlock(app->lock);
return NULL;
}
#endif
@@ -4295,6 +4362,7 @@ main (int argc, char *argv[])
/* Initialize capture params */
capture_init_params ();
GOptionEntry options_argus[] = {
{"prev-res", 0, 0, G_OPTION_ARG_CALLBACK, parse_spec,
"Preview width & height."
@@ -4320,7 +4388,7 @@ main (int argc, char *argv[])
"Capture mode value (1=still 2=video)", NULL}
,
{"video-enc", 'v', 0, G_OPTION_ARG_INT, &app->encset.video_enc,
"Video encoder type (0=h264[HW] 1=vp8[HW] 2=h265[HW] 3=vp9[HW])",
"Video encoder type (0=h264[HW] 1=vp8[HW] 2=h265[HW] 3=vp9[HW] 4=h264[SW])",
NULL}
,
{"hw-enc-path", 'p', 0, G_OPTION_ARG_INT, &app->encset.hw_enc_type,
@@ -4521,6 +4589,17 @@ main (int argc, char *argv[])
if(app->encset.bitrate != 0)
is_user_bitrate = 1;
FILE *fp;
fp = fopen(NVGST_DEFAULT_V4L2_NVENC_DEVICE_PATH, "r");
if (fp == NULL)
{
if (app->encset.video_enc != FORMAT_H264_SW)
g_print("Codec not supported. Falling back to opensrc H264 encoder\n");
app->encset.video_enc = FORMAT_H264_SW;
}
if (fp)
fclose(fp);
g_option_context_free (ctx);
if (!app->aut.automate)
@@ -4576,6 +4655,10 @@ main (int argc, char *argv[])
payloader = "rtpvp9pay";
parser = "identity";
break;
case FORMAT_H264_SW:
payloader = "rtph264pay";
parser = "h264parse";
break;
default:
NVGST_ERROR_MESSAGE ("Unsupported codec for streaming");
goto done;

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2014-2021, NVIDIA CORPORATION. All rights reserved.
* Copyright (c) 2014-2023, NVIDIA CORPORATION. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
@@ -93,6 +93,7 @@ int dummy_func ()
#define NVGST_DEFAULT_CAPTURE_FORMAT "I420"
#define NVGST_DEFAULT_CAPTURE_FPS 30
#define NVGST_DEFAULT_VIDCAP_DEVICE "/dev/video0"
#define NVGST_DEFAULT_V4L2_NVENC_DEVICE_PATH "/dev/nvhost-msenc"
#define DEFAULT_LOCATION "/dev/null"
#define SUCCESS 0
@@ -143,6 +144,7 @@ int dummy_func ()
#define NVGST_PRIMARY_V4L2_VP8_VENC "nvv4l2vp8enc"
#define NVGST_PRIMARY_V4L2_VP9_VENC "nvv4l2vp9enc"
#define NVGST_PRIMARY_V4L2_H265_VENC "nvv4l2h265enc"
#define NVGST_SW_H264_ENC "x264enc"
#define NVGST_PRIMARY_H264_PARSER "h264parse"
#define NVGST_PRIMARY_H265_PARSER "h265parse"
#define NVGST_PRIMARY_MP4_MUXER "qtmux"
@@ -419,10 +421,11 @@ typedef enum
FORMAT_H264_HW = 0,
FORMAT_VP8_HW,
FORMAT_H265_HW,
FORMAT_VP9_HW
FORMAT_VP9_HW,
FORMAT_H264_SW
} VideoEncFormatType;
#define VIDEO_ENC_STRINGS {"H.264 (HW)", "VP8 (HW)", "H.265 (HW)", "VP9 (HW)", NULL};
#define VIDEO_ENC_STRINGS {"H.264 (HW)", "VP8 (HW)", "H.265 (HW)", "VP9 (HW)", "H264 (SW)", NULL};
/* H264 ENCODE PROFILE TYPE */
typedef enum
@@ -499,7 +502,7 @@ typedef struct
typedef struct
{
gint image_enc;
gint video_enc;
VideoEncFormatType video_enc;
HardwareEncoderType hw_enc_type;
guint bitrate;
gboolean enabletwopassCBR;

View File

@@ -1 +1 @@
jetson_35.1
jetson_35.6