GithubHelp home page GithubHelp logo

Comments (12)

MushMal avatar MushMal commented on July 24, 2024

Hi @matszal - this error is indicative that your gstreamer pipeline has an error when trying to move to a "READY" state. Could you please provide more information in the issue by pasting the logs from running with GST_DEBUG=4 environment variable. You can simply set it before running the application:

export GST_DEBUG=4
and then run the application.

This will make the gstreamer be more verbose.

from amazon-kinesis-video-streams-producer-sdk-cpp.

matszal avatar matszal commented on July 24, 2024

Hi @MushMal - this is the log after running the test app script with GST_Debug

export GST_DEBUG=4
pi@raspberrypi:~/Desktop/Kinesis/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build $ ./kinesis_video_gstreamer_sample_app Kinesis_user
0:00:00.000477445 1823 0x972200 INFO GST_INIT gst.c:507:init_pre: Initializing GStreamer Core Library version 1.12.3
0:00:00.000941401 1823 0x972200 INFO GST_INIT gst.c:508:init_pre: Using library installed in /home/pi/Desktop/Kinesis/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib
0:00:00.001036973 1823 0x972200 INFO GST_INIT gst.c:528:init_pre: Linux raspberrypi 4.14.24-v7+ #1097 SMP Mon Mar 5 16:42:05 GMT 2018 armv7l
0:00:00.002767276 1823 0x972200 INFO GST_INIT gstmessage.c:127:_priv_gst_message_initialize: init messages
0:00:00.006198506 1823 0x972200 INFO GST_INIT gstcontext.c:84:_priv_gst_context_initialize: init contexts
0:00:00.007531467 1823 0x972200 INFO GST_PLUGIN_LOADING gstplugin.c:317:_priv_gst_plugin_initialize: registering 0 static plugins
0:00:00.008324900 1823 0x972200 INFO GST_PLUGIN_LOADING gstplugin.c:225:gst_plugin_register_static: registered static plugin "staticelements"
0:00:00.008432608 1823 0x972200 INFO GST_PLUGIN_LOADING gstplugin.c:227:gst_plugin_register_static: added static plugin "staticelements", result: 1
0:00:00.008623648 1823 0x972200 INFO GST_REGISTRY gstregistry.c:1721:ensure_current_registry: reading registry cache: /home/pi/.cache/gstreamer-1.0/registry.armv7l.bin
0:00:00.115061733 1823 0x972200 INFO GST_REGISTRY gstregistrybinary.c:621:priv_gst_registry_binary_read_cache: loaded /home/pi/.cache/gstreamer-1.0/registry.armv7l.bin in 0.106230 seconds
0:00:00.115417512 1823 0x972200 INFO GST_REGISTRY gstregistry.c:1577:scan_and_update_registry: Validating plugins from registry cache: /home/pi/.cache/gstreamer-1.0/registry.armv7l.bin
0:00:00.120868522 1823 0x972200 INFO GST_REGISTRY gstregistry.c:1679:scan_and_update_registry: Registry cache has not changed
0:00:00.120927949 1823 0x972200 INFO GST_REGISTRY gstregistry.c:1756:ensure_current_registry: registry reading and updating done, result = 1
0:00:00.120968939 1823 0x972200 INFO GST_INIT gst.c:727:init_post: GLib runtime version: 2.54.2
0:00:00.121004095 1823 0x972200 INFO GST_INIT gst.c:729:init_post: GLib headers version: 2.54.2
0:00:00.121036699 1823 0x972200 INFO GST_INIT gst.c:730:init_post: initialized GStreamer successfully
INFO - Initializing curl.

createKinesisVideoClient(): Creating Kinesis Video Client
heapInitialize(): Initializing native heap with limit size 536870912, spill ratio 0% and flags 0x00000001
heapInitialize(): Creating AIV heap.
heapInitialize(): Heap is initialized OKINFO - Refreshing credentials. Force refreshing: 0 Now time is: 1520889592 Expiration: 0
INFO - New credentials expiration is 1520891992
DEBUG - createDeviceHandler invoked

createDeviceResultEvent(): Create device result event.DEBUG - Awaiting for the producer to become ready...
DEBUG - Kinesis Video producer is Ready.
DEBUG - Client is ready
INFO - Creating Kinesis Video Stream Kinesis_user

createKinesisVideoStream(): Creating Kinesis Video Stream.DEBUG - describeStreamHandler invoked
INFO - Refreshing credentials. Force refreshing: 0 Now time is: 1520889592 Expiration: 0
DEBUG - Awaiting for the stream to become ready...
DEBUG - describeStream response: {"StreamInfo":{"CreationTime":1.520806840242E9,"DataRetentionInHours":2,"DeviceName":"Kinesis_Video_Device","KmsKeyId":"arn:aws:kms:us-west-2:831663239333:alias/aws/kinesisvideo","MediaType":"video/h264","Status":"ACTIVE","StreamARN":"arn:aws:kinesisvideo:us-west-2:831663239333:stream/Kinesis_user/1520806840242","StreamName":"Kinesis_user","Version":"cPJApA61I8VZS2LcTumX"}}
INFO - Discovered existing Kinesis Video stream: arn:aws:kinesisvideo:us-west-2:831663239333:stream/Kinesis_user/1520806840242
INFO - stream arn in stream_info struct: arn:aws:kinesisvideo:us-west-2:831663239333:stream/Kinesis_user/1520806840242

describeStreamResultEvent(): Describe stream result event.DEBUG - streamingEndpointHandler invoked
INFO - Refreshing credentials. Force refreshing: 0 Now time is: 1520889593 Expiration: 0
DEBUG - getStreamingEndpoint response: {"DataEndpoint":"https://s-4010bf70.kinesisvideo.us-west-2.amazonaws.com"}
INFO - streaming to endpoint: https://s-4010bf70.kinesisvideo.us-west-2.amazonaws.com

getStreamingEndpointResultEvent(): Get streaming endpoint result event.DEBUG - streamingTokenHandler invoked
INFO - Refreshing credentials. Force refreshing: 1 Now time is: 1520889594 Expiration: 1520891992
INFO - New credentials expiration is 1520891994

getStreamingTokenResultEvent(): Get streaming token result event.DEBUG - Kinesis Video stream Kinesis_user is Ready.
DEBUG - Stream is ready
0:00:02.048032631 1823 0x972200 INFO GST_PLUGIN_LOADING gstplugin.c:843:_priv_gst_plugin_load_file_for_registry: plugin "/home/pi/Desktop/Kinesis/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib/gstreamer-1.0/libgstcoreelements.so" loaded
0:00:02.048127318 1823 0x972200 INFO GST_ELEMENT_FACTORY gstelementfactory.c:359:gst_element_factory_create: creating element "capsfilter" named "source_filter"
0:00:02.048651274 1823 0x972200 INFO GST_ELEMENT_PADS gstelement.c:670:gst_element_add_pad:GstBaseTransform@0x9c8128 adding pad 'sink'
0:00:02.048761325 1823 0x972200 INFO GST_ELEMENT_PADS gstelement.c:670:gst_element_add_pad:GstBaseTransform@0x9c8128 adding pad 'src'
0:00:02.048864293 1823 0x972200 INFO GST_ELEMENT_FACTORY gstelementfactory.c:359:gst_element_factory_create: creating element "capsfilter" named "encoder_filter"
0:00:02.048945491 1823 0x972200 INFO GST_ELEMENT_PADS gstelement.c:670:gst_element_add_pad:GstBaseTransform@0x9c8358 adding pad 'sink'
0:00:02.049015022 1823 0x972200 INFO GST_ELEMENT_PADS gstelement.c:670:gst_element_add_pad:GstBaseTransform@0x9c8358 adding pad 'src'
0:00:02.049888298 1823 0x972200 INFO GST_PLUGIN_LOADING gstplugin.c:843:_priv_gst_plugin_load_file_for_registry: plugin "/home/pi/Desktop/Kinesis/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib/gstreamer-1.0/libgstapp.so" loaded
0:00:02.049964547 1823 0x972200 INFO GST_ELEMENT_FACTORY gstelementfactory.c:359:gst_element_factory_create: creating element "appsink" named "appsink"
0:00:02.050529440 1823 0x972200 INFO GST_ELEMENT_PADS gstelement.c:670:gst_element_add_pad:GstBaseSink@0x9cbd28 adding pad 'sink'
0:00:02.055612275 1823 0x972200 INFO GST_PLUGIN_LOADING gstplugin.c:843:_priv_gst_plugin_load_file_for_registry: plugin "/home/pi/Desktop/Kinesis/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib/gstreamer-1.0/libgstvideoparsersbad.so" loaded
0:00:02.055713941 1823 0x972200 INFO GST_ELEMENT_FACTORY gstelementfactory.c:359:gst_element_factory_create: creating element "h264parse" named "h264parse"
0:00:02.056123731 1823 0x972200 INFO GST_ELEMENT_PADS gstelement.c:670:gst_element_add_pad:GstBaseParse@0xabce58 adding pad 'sink'
0:00:02.056245709 1823 0x972200 INFO GST_ELEMENT_PADS gstelement.c:670:gst_element_add_pad:GstBaseParse@0xabce58 adding pad 'src'
0:00:02.056400812 1823 0x972200 INFO baseparse gstbaseparse.c:3944:gst_base_parse_set_pts_interpolation:GstH264Parse@0xabce58 PTS interpolation: no
0:00:02.056462843 1823 0x972200 WARN GST_ELEMENT_FACTORY gstelementfactory.c:456:gst_element_factory_make: no such element factory "vtenc_h264_hw"!
0:00:02.060126676 1823 0x972200 INFO GST_PLUGIN_LOADING gstplugin.c:843:_priv_gst_plugin_load_file_for_registry: plugin "/home/pi/Desktop/Kinesis/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib/gstreamer-1.0/libgstomx.so" loaded
0:00:02.060215218 1823 0x972200 INFO GST_ELEMENT_FACTORY gstelementfactory.c:359:gst_element_factory_create: creating element "omxh264enc" named "encoder"
0:00:02.060822558 1823 0x972200 INFO GST_ELEMENT_PADS gstelement.c:670:gst_element_add_pad:GstVideoEncoder@0xaca0b8 adding pad 'sink'
0:00:02.060913651 1823 0x972200 INFO GST_ELEMENT_PADS gstelement.c:670:gst_element_add_pad:GstVideoEncoder@0xaca0b8 adding pad 'src'
0:00:02.064048633 1823 0x972200 INFO GST_PLUGIN_LOADING gstplugin.c:843:_priv_gst_plugin_load_file_for_registry: plugin "/home/pi/Desktop/Kinesis/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib/gstreamer-1.0/libgstvideo4linux2.so" loaded
0:00:02.064137382 1823 0x972200 INFO GST_ELEMENT_FACTORY gstelementfactory.c:359:gst_element_factory_create: creating element "v4l2src" named "source"
0:00:02.068393139 1823 0x972200 INFO GST_ELEMENT_PADS gstelement.c:670:gst_element_add_pad:GstBaseSrc@0xad60a0 adding pad 'src'
0:00:02.068496837 1823 0x972200 INFO GST_ELEMENT_FACTORY gstelementfactory.c:359:gst_element_factory_create: creating element "pipeline" named "test-pipeline"
0:00:02.068808658 1823 0x972200 WARN v4l2 v4l2_calls.c:612:gst_v4l2_open: error: Cannot identify device '/dev/video0'.
0:00:02.068849907 1823 0x972200 WARN v4l2 v4l2_calls.c:612:gst_v4l2_open: error: system error: No such file or directory
0:00:02.068907720 1823 0x972200 INFO GST_ERROR_SYSTEM gstelement.c:1938:gst_element_message_full_with_details: posting message: Cannot identify device '/dev/video0'.
0:00:02.068996782 1823 0x972200 INFO GST_ERROR_SYSTEM gstelement.c:1965:gst_element_message_full_with_details: posted error message: Cannot identify device '/dev/video0'.
0:00:02.069042927 1823 0x972200 INFO GST_STATES gstelement.c:2752:gst_element_change_state: have FAILURE change_state return
0:00:02.069075687 1823 0x972200 INFO GST_STATES gstelement.c:2342:gst_element_abort_state: aborting state from NULL to READY
Unable to set the source to ready state.

freeKinesisVideoClient(): Freeing Kinesis Video ClientDEBUG - streamClosedHandler invoked

commonHeapDebugCheckAllocator(): Heap is initialized
commonHeapDebugCheckAllocator(): Heap limit: 536870912
commonHeapDebugCheckAllocator(): Heap size: 0
commonHeapDebugCheckAllocator(): Number of allocations: 0
aivHeapDebugCheckAllocator(): Allocated blocks pointer: (nil)
aivHeapDebugCheckAllocator(): *******************************************
aivHeapDebugCheckAllocator(): *******************************************
aivHeapDebugCheckAllocator(): Free blocks pointer: 0x56224008
aivHeapDebugCheckAllocator(): *******************************************
aivHeapDebugCheckAllocator(): Block: 0x56224008 size: 536870887
aivHeapDebugCheckAllocator(): *******************************************
heapRelease(): Freeing native heap.INFO - Freeing Kinesis Video Stream Kinesis_user

freeKinesisVideoStream(): Freeing Kinesis Video stream.INFO - Curl shutdown.

from amazon-kinesis-video-streams-producer-sdk-cpp.

MushMal avatar MushMal commented on July 24, 2024

0:00:02.068808658 1823 0x972200 WARN v4l2 v4l2_calls.c:612:gst_v4l2_open: error: Cannot identify device '/dev/video0'.

Please refer to https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp#raspberry-pi-failure-to-load-the-camera-device

from amazon-kinesis-video-streams-producer-sdk-cpp.

matszal avatar matszal commented on July 24, 2024

@MushMal - Thanks a lot that solved some of the problems but I am getting more now. After running demo script the terminal is keep printing some DEBUG information with eror below. Wondering if you ever came accross that problem?
getKinesisVideoMetrics(): Get the memory metrics size.
getKinesisVideoStreamMetrics(): Get stream metrics for Stream 0000000001a5cfc2.DEBUG - Wrote 16372 bytes to Kinesis Video. Upload stream handle: 0
DEBUG - Kinesis Video client and stream metrics
>> Overall storage size: 536870912
>> Available storage size: 534317377
>> Allocated storage size: 2553535
>> Total view allocation size: 144064
>> Total streams frame rate: 29
>> Total streams transfer rate: 1338112
>> Current view duration: 0
>> Overall view duration: 20090000
>> Current view size: 0
>> Overall view size: 2552035
>> Current frame rate: 29.7253
>> Current transfer rate: 1349724
DEBUG - postBodyStreamingReadFunc (curl callback) invoked
DEBUG - Wrote 16372 bytes to Kinesis Video. Upload stream handle: 0
DEBUG - postBodyStreamingReadFunc (curl callback) invoked
DEBUG - Wrote 16372 bytes to Kinesis Video. Upload stream handle: 0
DEBUG - postBodyStreamingReadFunc (curl callback) invoked
DEBUG - Wrote 16372 bytes to Kinesis Video. Upload stream handle: 0
DEBUG - postBodyStreamingReadFunc (curl callback) invoked
DEBUG - Wrote 16372 bytes to Kinesis Video. Upload stream handle: 0
DEBUG - postBodyStreamingReadFunc (curl callback) invoked
DEBUG - Wrote 16372 bytes to Kinesis Video. Upload stream handle: 0
DEBUG - postBodyStreamingReadFunc (curl callback) invoked
DEBUG - Wrote 16372 bytes to Kinesis Video. Upload stream handle: 0
DEBUG - postBodyStreamingReadFunc (curl callback) invoked
DEBUG - Wrote 16372 bytes to Kinesis Video. Upload stream handle: 0
ERROR - Failed to submit frame to Kinesis Video client. status: 0x32000002 decoding timestamp: 1084933661 presentation timestamp: 1084600075
Dropped frame!

from amazon-kinesis-video-streams-producer-sdk-cpp.

MushMal avatar MushMal commented on July 24, 2024

@matszal the initial output looks good. You have ~512MB content store and most is available. Your network speed is adequate for your stream so you have 0 latency. You are streaming at ~30 fps with the observed transfer rate of 10Mbps.

Tha last line is an interesting one. 0x32000002 means invalid timestamps have been passed to the SDK - they are not monotonically increasing or your frame references frame from the previous fragment.

Can I get the following info from you:

  • What are you trying to accomplish? What's your end-to-end scenario, whats your latency requirements, etc...
  • What is your hardware/platform/version
  • What is the type of camera
  • What application are you running - is this the kinesis video GStreamer sample?
  • Have you modified the sample?
  • Could you include all the log output so we can try to see what's going on with the GStreamer?
  • Could you also set export GST_DEBUG=4 before running the GStreamer application (assuming this is gstreamer application you are running) - this will produce more GStreamer logs.

from amazon-kinesis-video-streams-producer-sdk-cpp.

matszal avatar matszal commented on July 24, 2024

@MushMal

  • I'd like to be able to stream live videos to android app. This is my final year college project and it'll be connected to local network. Best scenario would be to have instant access to stream after pressing the button on android app if possible?
  • My platform is raspberry pi v3
  • Camera type is genuine pi camera v2 i believe
  • Application tested was kinesis_video_gstreamer_sample_app
  • example hasn't been modified in any way (followed AWS pi - kinesis tutorial)
    I will add log in few minutes

from amazon-kinesis-video-streams-producer-sdk-cpp.

MushMal avatar MushMal commented on July 24, 2024

Thanks - looking forward to the logs. BTW, there is a producer SDK for Android too that you might be interested in.

from amazon-kinesis-video-streams-producer-sdk-cpp.

matszal avatar matszal commented on July 24, 2024

@MushMal Please see attached log. Sorry, but thers a lot...
pi@raspberrypi:~/Desktop/Kinesis/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build $ ./kinesis_video_gstreamer_sample_app Kinesis_user
0:00:00.000471453 1693 0xb7c200 INFO GST_INIT gst.c:507:init_pre: Initializing GStreamer Core Library version 1.12.3
0:00:00.000932334 1693 0xb7c200 INFO GST_INIT gst.c:508:init_pre: Using library installed in /home/pi/Desktop/Kinesis/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib
0:00:00.001029000 1693 0xb7c200 INFO GST_INIT gst.c:528:init_pre: Linux raspberrypi 4.14.24-v7+ #1097 SMP Mon Mar 5 16:42:05 GMT 2018 armv7l
0:00:00.002732057 1693 0xb7c200 INFO GST_INIT gstmessage.c:127:_priv_gst_message_initialize: init messages
0:00:00.006206659 1693 0xb7c200 INFO GST_INIT gstcontext.c:84:_priv_gst_context_initialize: init contexts
0:00:00.007530344 1693 0xb7c200 INFO GST_PLUGIN_LOADING gstplugin.c:317:_priv_gst_plugin_initialize: registering 0 static plugins
0:00:00.008301691 1693 0xb7c200 INFO GST_PLUGIN_LOADING gstplugin.c:225:gst_plugin_register_static: registered static plugin "staticelements"
0:00:00.008452262 1693 0xb7c200 INFO GST_PLUGIN_LOADING gstplugin.c:227:gst_plugin_register_static: added static plugin "staticelements", result: 1
0:00:00.008647885 1693 0xb7c200 INFO GST_REGISTRY gstregistry.c:1721:ensure_current_registry: reading registry cache: /home/pi/.cache/gstreamer-1.0/registry.armv7l.bin
0:00:00.126853779 1693 0xb7c200 INFO GST_REGISTRY gstregistrybinary.c:621:priv_gst_registry_binary_read_cache: loaded /home/pi/.cache/gstreamer-1.0/registry.armv7l.bin in 0.117994 seconds
0:00:00.127110808 1693 0xb7c200 INFO GST_REGISTRY gstregistry.c:1577:scan_and_update_registry: Validating plugins from registry cache: /home/pi/.cache/gstreamer-1.0/registry.armv7l.bin
0:00:00.131988417 1693 0xb7c200 INFO GST_REGISTRY gstregistry.c:1326:gst_registry_scan_path_level: cached info for /home/pi/Desktop/Kinesis/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib/gstreamer-1.0/libgstvideo4linux2.so is stale
0:00:00.000241821 1694 0x46d400 INFO GST_INIT gst.c:507:init_pre: Initializing GStreamer Core Library version 1.12.3
0:00:00.000431298 1694 0x46d400 INFO GST_INIT gst.c:508:init_pre: Using library installed in /home/pi/Desktop/Kinesis/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib
0:00:00.000480568 1694 0x46d400 INFO GST_INIT gst.c:528:init_pre: Linux raspberrypi 4.14.24-v7+ #1097 SMP Mon Mar 5 16:42:05 GMT 2018 armv7l
0:00:00.001359362 1694 0x46d400 INFO GST_INIT gstmessage.c:127:_priv_gst_message_initialize: init messages
0:00:00.003083981 1694 0x46d400 INFO GST_INIT gstcontext.c:84:_priv_gst_context_initialize: init contexts
0:00:00.003766735 1694 0x46d400 INFO GST_PLUGIN_LOADING gstplugin.c:317:_priv_gst_plugin_initialize: registering 0 static plugins
0:00:00.004174179 1694 0x46d400 INFO GST_PLUGIN_LOADING gstplugin.c:225:gst_plugin_register_static: registered static plugin "staticelements"
0:00:00.004228397 1694 0x46d400 INFO GST_PLUGIN_LOADING gstplugin.c:227:gst_plugin_register_static: added static plugin "staticelements", result: 1
0:00:00.004315063 1694 0x46d400 INFO GST_REGISTRY gstregistry.c:1756:ensure_current_registry: registry reading and updating done, result = 1
0:00:00.004354854 1694 0x46d400 INFO GST_INIT gst.c:727:init_post: GLib runtime version: 2.54.2
0:00:00.004389489 1694 0x46d400 INFO GST_INIT gst.c:729:init_post: GLib headers version: 2.54.2
0:00:00.004419958 1694 0x46d400 INFO GST_INIT gst.c:730:init_post: initialized GStreamer successfully
0:00:00.014552100 1694 0x46d400 INFO GST_PLUGIN_LOADING gstplugin.c:843:_priv_gst_plugin_load_file_for_registry: plugin "/home/pi/Desktop/Kinesis/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib/gstreamer-1.0/libgstvideo4linux2.so" loaded
0:00:00.154772729 1693 0xb7c200 INFO GST_REGISTRY gstregistry.c:1688:scan_and_update_registry: Registry cache changed. Writing new registry cache
0:00:00.154842833 1693 0xb7c200 INFO GST_REGISTRY gstregistrybinary.c:369:priv_gst_registry_binary_write_cache: Building binary registry cache image
0:00:00.248173237 1693 0xb7c200 INFO GST_REGISTRY gstregistrybinary.c:401:priv_gst_registry_binary_write_cache: Writing binary registry cache
0:00:00.677446191 1693 0xb7c200 INFO GST_REGISTRY gstregistrybinary.c:262:gst_registry_binary_cache_finish: Wrote binary registry cache
0:00:00.677618689 1693 0xb7c200 INFO GST_REGISTRY gstregistry.c:1697:scan_and_update_registry: Registry cache written successfully
0:00:00.677660355 1693 0xb7c200 INFO GST_REGISTRY gstregistry.c:1756:ensure_current_registry: registry reading and updating done, result = 1
0:00:00.677700199 1693 0xb7c200 INFO GST_INIT gst.c:727:init_post: GLib runtime version: 2.54.2
0:00:00.677737959 1693 0xb7c200 INFO GST_INIT gst.c:729:init_post: GLib headers version: 2.54.2
0:00:00.677770979 1693 0xb7c200 INFO GST_INIT gst.c:730:init_post: initialized GStreamer successfully
INFO - Initializing curl.

createKinesisVideoClient(): Creating Kinesis Video Client
heapInitialize(): Initializing native heap with limit size 536870912, spill ratio 0% and flags 0x00000001
heapInitialize(): Creating AIV heap.
heapInitialize(): Heap is initialized OKINFO - Refreshing credentials. Force refreshing: 0 Now time is: 1520975477 Expiration: 0
INFO - New credentials expiration is 1520977877
DEBUG - createDeviceHandler invoked

createDeviceResultEvent(): Create device result event.DEBUG - Awaiting for the producer to become ready...
DEBUG - Kinesis Video producer is Ready.
DEBUG - Client is ready
INFO - Creating Kinesis Video Stream Kinesis_user

createKinesisVideoStream(): Creating Kinesis Video Stream.DEBUG - describeStreamHandler invoked
INFO - Refreshing credentials. Force refreshing: 0 Now time is: 1520975477 Expiration: 0
DEBUG - Awaiting for the stream to become ready...
DEBUG - describeStream response: {"StreamInfo":{"CreationTime":1.520806840242E9,"DataRetentionInHours":2,"DeviceName":"Kinesis_Video_Device","KmsKeyId":"arn:aws:kms:us-west-2:831663239333:alias/aws/kinesisvideo","MediaType":"video/h264","Status":"ACTIVE","StreamARN":"arn:aws:kinesisvideo:us-west-2:831663239333:stream/Kinesis_user/1520806840242","StreamName":"Kinesis_user","Version":"cPJApA61I8VZS2LcTumX"}}
INFO - Discovered existing Kinesis Video stream: arn:aws:kinesisvideo:us-west-2:831663239333:stream/Kinesis_user/1520806840242
INFO - stream arn in stream_info struct: arn:aws:kinesisvideo:us-west-2:831663239333:stream/Kinesis_user/1520806840242

describeStreamResultEvent(): Describe stream result event.DEBUG - streamingEndpointHandler invoked
INFO - Refreshing credentials. Force refreshing: 0 Now time is: 1520975478 Expiration: 0
DEBUG - getStreamingEndpoint response: {"DataEndpoint":"https://s-4010bf70.kinesisvideo.us-west-2.amazonaws.com"}
INFO - streaming to endpoint: https://s-4010bf70.kinesisvideo.us-west-2.amazonaws.com

getStreamingEndpointResultEvent(): Get streaming endpoint result event.DEBUG - streamingTokenHandler invoked
INFO - Refreshing credentials. Force refreshing: 1 Now time is: 1520975478 Expiration: 1520977877
INFO - New credentials expiration is 1520977878

getStreamingTokenResultEvent(): Get streaming token result event.DEBUG - Kinesis Video stream Kinesis_user is Ready.
DEBUG - Stream is ready
0:00:02.412938893 1693 0xb7c200 INFO GST_PLUGIN_LOADING gstplugin.c:843:_priv_gst_plugin_load_file_for_registry: plugin "/home/pi/Desktop/Kinesis/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib/gstreamer-1.0/libgstcoreelements.so" loaded
0:00:02.413033423 1693 0xb7c200 INFO GST_ELEMENT_FACTORY gstelementfactory.c:359:gst_element_factory_create: creating element "capsfilter" named "source_filter"
0:00:02.413516960 1693 0xb7c200 INFO GST_ELEMENT_PADS gstelement.c:670:gst_element_add_pad:GstBaseTransform@0xbd21c8 adding pad 'sink'
0:00:02.413620865 1693 0xb7c200 INFO GST_ELEMENT_PADS gstelement.c:670:gst_element_add_pad:GstBaseTransform@0xbd21c8 adding pad 'src'
0:00:02.413725396 1693 0xb7c200 INFO GST_ELEMENT_FACTORY gstelementfactory.c:359:gst_element_factory_create: creating element "capsfilter" named "encoder_filter"
0:00:02.413810447 1693 0xb7c200 INFO GST_ELEMENT_PADS gstelement.c:670:gst_element_add_pad:GstBaseTransform@0xbd23f8 adding pad 'sink'
0:00:02.413882946 1693 0xb7c200 INFO GST_ELEMENT_PADS gstelement.c:670:gst_element_add_pad:GstBaseTransform@0xbd23f8 adding pad 'src'
0:00:02.414709865 1693 0xb7c200 INFO GST_PLUGIN_LOADING gstplugin.c:843:_priv_gst_plugin_load_file_for_registry: plugin "/home/pi/Desktop/Kinesis/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib/gstreamer-1.0/libgstapp.so" loaded
0:00:02.414781948 1693 0xb7c200 INFO GST_ELEMENT_FACTORY gstelementfactory.c:359:gst_element_factory_create: creating element "appsink" named "appsink"
0:00:02.415344182 1693 0xb7c200 INFO GST_ELEMENT_PADS gstelement.c:670:gst_element_add_pad:GstBaseSink@0xd99708 adding pad 'sink'
0:00:02.420466060 1693 0xb7c200 INFO GST_PLUGIN_LOADING gstplugin.c:843:_priv_gst_plugin_load_file_for_registry: plugin "/home/pi/Desktop/Kinesis/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib/gstreamer-1.0/libgstvideoparsersbad.so" loaded
0:00:02.420561684 1693 0xb7c200 INFO GST_ELEMENT_FACTORY gstelementfactory.c:359:gst_element_factory_create: creating element "h264parse" named "h264parse"
0:00:02.420959805 1693 0xb7c200 INFO GST_ELEMENT_PADS gstelement.c:670:gst_element_add_pad:GstBaseParse@0xd6e010 adding pad 'sink'
0:00:02.421053763 1693 0xb7c200 INFO GST_ELEMENT_PADS gstelement.c:670:gst_element_add_pad:GstBaseParse@0xd6e010 adding pad 'src'
0:00:02.421191001 1693 0xb7c200 INFO baseparse gstbaseparse.c:3944:gst_base_parse_set_pts_interpolation:GstH264Parse@0xd6e010 PTS interpolation: no
0:00:02.421252459 1693 0xb7c200 WARN GST_ELEMENT_FACTORY gstelementfactory.c:456:gst_element_factory_make: no such element factory "vtenc_h264_hw"!
0:00:02.424885445 1693 0xb7c200 INFO GST_PLUGIN_LOADING gstplugin.c:843:_priv_gst_plugin_load_file_for_registry: plugin "/home/pi/Desktop/Kinesis/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib/gstreamer-1.0/libgstomx.so" loaded
0:00:02.424966642 1693 0xb7c200 INFO GST_ELEMENT_FACTORY gstelementfactory.c:359:gst_element_factory_create: creating element "omxh264enc" named "encoder"
0:00:02.425625854 1693 0xb7c200 INFO GST_ELEMENT_PADS gstelement.c:670:gst_element_add_pad:GstVideoEncoder@0xdbc150 adding pad 'sink'
0:00:02.425720905 1693 0xb7c200 INFO GST_ELEMENT_PADS gstelement.c:670:gst_element_add_pad:GstVideoEncoder@0xdbc150 adding pad 'src'
0:00:02.429002905 1693 0xb7c200 INFO GST_PLUGIN_LOADING gstplugin.c:843:_priv_gst_plugin_load_file_for_registry: plugin "/home/pi/Desktop/Kinesis/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib/gstreamer-1.0/libgstvideo4linux2.so" loaded
0:00:02.429088477 1693 0xb7c200 INFO GST_ELEMENT_FACTORY gstelementfactory.c:359:gst_element_factory_create: creating element "v4l2src" named "source"
0:00:02.433457654 1693 0xb7c200 INFO GST_ELEMENT_PADS gstelement.c:670:gst_element_add_pad:GstBaseSrc@0xdc40a0 adding pad 'src'
0:00:02.433572184 1693 0xb7c200 INFO GST_ELEMENT_FACTORY gstelementfactory.c:359:gst_element_factory_create: creating element "pipeline" named "test-pipeline"
0:00:02.434259313 1693 0xb7c200 INFO v4l2 v4l2_calls.c:592:gst_v4l2_open: Opened device 'mmal service 16.1' (/dev/video0) successfully
0:00:02.434376291 1693 0xb7c200 INFO GST_STATES gstelement.c:2467:gst_element_continue_state: completed state change to READY
0:00:02.434415978 1693 0xb7c200 INFO GST_STATES gstelement.c:2372:_priv_gst_element_state_changed: notifying about state-changed NULL to READY (VOID_PENDING pending)
0:00:02.434497957 1693 0xb7c200 INFO GST_ELEMENT_PADS gstelement.c:918:gst_element_get_static_pad: found pad source:src
0:00:02.434650872 1693 0xb7c200 INFO v4l2 gstv4l2object.c:1156:gst_v4l2_object_fill_format_list: got 14 format(s):
0:00:02.434687746 1693 0xb7c200 INFO v4l2 gstv4l2object.c:1162:gst_v4l2_object_fill_format_list: YUYV
0:00:02.434727225 1693 0xb7c200 INFO v4l2 gstv4l2object.c:1162:gst_v4l2_object_fill_format_list: UYVY
0:00:02.434764360 1693 0xb7c200 INFO v4l2 gstv4l2object.c:1162:gst_v4l2_object_fill_format_list: YU12
0:00:02.434800297 1693 0xb7c200 INFO v4l2 gstv4l2object.c:1162:gst_v4l2_object_fill_format_list: YV12
0:00:02.434836964 1693 0xb7c200 INFO v4l2 gstv4l2object.c:1162:gst_v4l2_object_fill_format_list: JPEG
0:00:02.434873265 1693 0xb7c200 INFO v4l2 gstv4l2object.c:1162:gst_v4l2_object_fill_format_list: MJPG
0:00:02.434909307 1693 0xb7c200 INFO v4l2 gstv4l2object.c:1162:gst_v4l2_object_fill_format_list: BGR4
0:00:02.434946077 1693 0xb7c200 INFO v4l2 gstv4l2object.c:1162:gst_v4l2_object_fill_format_list: BGR3
0:00:02.434981389 1693 0xb7c200 INFO v4l2 gstv4l2object.c:1162:gst_v4l2_object_fill_format_list: RGB3
0:00:02.435016129 1693 0xb7c200 INFO v4l2 gstv4l2object.c:1162:gst_v4l2_object_fill_format_list: NV21
0:00:02.435050607 1693 0xb7c200 INFO v4l2 gstv4l2object.c:1162:gst_v4l2_object_fill_format_list: NV12
0:00:02.435084722 1693 0xb7c200 INFO v4l2 gstv4l2object.c:1162:gst_v4l2_object_fill_format_list: VYUY
0:00:02.435121284 1693 0xb7c200 INFO v4l2 gstv4l2object.c:1162:gst_v4l2_object_fill_format_list: YVYU
0:00:02.435157742 1693 0xb7c200 INFO v4l2 gstv4l2object.c:1162:gst_v4l2_object_fill_format_list: H264
0:00:02.436265960 1693 0xb7c200 INFO v4l2 gstv4l2object.c:3984:gst_v4l2_object_get_caps: probed caps: video/x-raw, format=(string)YUY2, width=(int)[ 32, 3280, 2 ], height=(int)[ 32, 2464, 2 ], pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, colorimetry=(string){ bt601 }, framerate=(fraction)[ 1/1, 90/1 ]; video/x-raw, format=(string)UYVY, width=(int)[ 32, 3280, 2 ], height=(int)[ 32, 2464, 2 ], pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, colorimetry=(string){ bt601 }, framerate=(fraction)[ 1/1, 90/1 ]; video/x-raw, format=(string)I420, width=(int)[ 32, 3280, 2 ], height=(int)[ 32, 2464, 2 ], pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, colorimetry=(string){ bt601 }, framerate=(fraction)[ 1/1, 90/1 ]; video/x-raw, format=(string)YV12, width=(int)[ 32, 3280, 2 ], height=(int)[ 32, 2464, 2 ], pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, colorimetry=(string){ bt601 }, framerate=(fraction)[ 1/1, 90/1 ]; image/jpeg, width=(int)[ 32, 3280, 2 ], height=(int)[ 32, 2464, 2 ], pixel-aspect-ratio=(fraction)1/1, colorimetry=(string){ 1:4:7:1 }, framerate=(fraction)[ 1/1, 90/1 ]; image/jpeg, width=(int)[ 32, 3280, 2 ], height=(int)[ 32, 2464, 2 ], pixel-aspect-ratio=(fraction)1/1, colorimetry=(string){ bt601 }, framerate=(fraction)[ 1/1, 90/1 ]; video/x-raw, format=(string)BGRx, width=(int)[ 32, 3280, 2 ], height=(int)[ 32, 2464, 2 ], pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, colorimetry=(string){ 1:1:5:4 }, framerate=(fraction)[ 1/1, 90/1 ]; video/x-raw, format=(string)BGR, width=(int)[ 32, 3280, 2 ], height=(int)[ 32, 2464, 2 ], pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, colorimetry=(string){ 1:1:5:4 }, framerate=(fraction)[ 1/1, 90/1 ]; video/x-raw, format=(string)RGB, width=(int)[ 32, 3280, 2 ], height=(int)[ 32, 2464, 2 ], pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, colorimetry=(string){ sRGB }, framerate=(fraction)[ 1/1, 90/1 ]; video/x-raw, format=(string)NV21, width=(int)[ 32, 3280, 2 ], height=(int)[ 32, 2464, 2 ], pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, colorimetry=(string){ bt601 }, framerate=(fraction)[ 1/1, 90/1 ]; video/x-raw, format=(string)NV12, width=(int)[ 32, 3280, 2 ], height=(int)[ 32, 2464, 2 ], pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, colorimetry=(string){ bt601 }, framerate=(fraction)[ 1/1, 90/1 ]; video/x-raw, format=(string)YVYU, width=(int)[ 32, 3280, 2 ], height=(int)[ 32, 2464, 2 ], pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, colorimetry=(string){ bt601 }, framerate=(fraction)[ 1/1, 90/1 ]; video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, width=(int)[ 32, 3280, 2 ], height=(int)[ 32, 2464, 2 ], pixel-aspect-ratio=(fraction)1/1, colorimetry=(string){ bt601 }, framerate=(fraction)[ 1/1, 90/1 ]
0:00:02.436913298 1693 0xb7c200 INFO GST_STATES gstelement.c:2467:gst_element_continue_state: completed state change to NULL
0:00:02.436958506 1693 0xb7c200 INFO GST_STATES gstelement.c:2372:_priv_gst_element_state_changed: notifying about state-changed READY to NULL (VOID_PENDING pending)
0:00:02.437195847 1693 0xb7c200 INFO GST_EVENT gstevent.c:1512:gst_event_new_reconfigure: creating reconfigure event
0:00:02.437271680 1693 0xb7c200 INFO GST_EVENT gstevent.c:1512:gst_event_new_reconfigure: creating reconfigure event
0:00:02.437554490 1693 0xb7c200 INFO GST_ELEMENT_PADS gstutils.c:1709:gst_element_link_pads_full: trying to link element source:(any) to element h264parse:(any)
0:00:02.437615114 1693 0xb7c200 INFO GST_PADS gstutils.c:1009:gst_pad_check_link: trying to link source:src and h264parse:sink
0:00:02.437707353 1693 0xb7c200 INFO GST_PADS gstpad.c:4115:gst_pad_peer_query:h264parse:src pad has no peer
0:00:02.437760790 1693 0xb7c200 INFO GST_PADS gstutils.c:1523:prepare_link_maybe_ghosting: source and h264parse in same bin, no need for ghost pads
0:00:02.437824800 1693 0xb7c200 INFO GST_PADS gstpad.c:2316:gst_pad_link_prepare: trying to link source:src and h264parse:sink
0:00:02.437893445 1693 0xb7c200 INFO GST_PADS gstpad.c:4115:gst_pad_peer_query:h264parse:src pad has no peer
0:00:02.437943913 1693 0xb7c200 INFO GST_PADS gstpad.c:2524:gst_pad_link_full: linked source:src and h264parse:sink, successful
0:00:02.437988756 1693 0xb7c200 INFO GST_EVENT gstevent.c:1512:gst_event_new_reconfigure: creating reconfigure event
0:00:02.438023652 1693 0xb7c200 INFO GST_EVENT gstpad.c:5670:gst_pad_send_event_unchecked:source:src Received event on flushing pad. Discarding
0:00:02.438076516 1693 0xb7c200 INFO GST_ELEMENT_PADS gstutils.c:1709:gst_element_link_pads_full: trying to link element h264parse:(any) to element encoder_filter:(any)
0:00:02.438128963 1693 0xb7c200 INFO GST_PADS gstutils.c:1009:gst_pad_check_link: trying to link h264parse:src and encoder_filter:sink
0:00:02.438215525 1693 0xb7c200 INFO GST_PADS gstpad.c:4115:gst_pad_peer_query:<encoder_filter:src> pad has no peer
0:00:02.438287451 1693 0xb7c200 INFO GST_PADS gstutils.c:1523:prepare_link_maybe_ghosting: h264parse and encoder_filter in same bin, no need for ghost pads
0:00:02.438344690 1693 0xb7c200 INFO GST_PADS gstpad.c:2316:gst_pad_link_prepare: trying to link h264parse:src and encoder_filter:sink
0:00:02.438456981 1693 0xb7c200 INFO GST_PADS gstpad.c:4115:gst_pad_peer_query:<encoder_filter:src> pad has no peer
0:00:02.438512918 1693 0xb7c200 INFO GST_PADS gstpad.c:2524:gst_pad_link_full: linked h264parse:src and encoder_filter:sink, successful
0:00:02.438556251 1693 0xb7c200 INFO GST_EVENT gstevent.c:1512:gst_event_new_reconfigure: creating reconfigure event
0:00:02.438588334 1693 0xb7c200 INFO GST_EVENT gstpad.c:5670:gst_pad_send_event_unchecked:h264parse:src Received event on flushing pad. Discarding
0:00:02.438642292 1693 0xb7c200 INFO GST_ELEMENT_PADS gstutils.c:1709:gst_element_link_pads_full: trying to link element encoder_filter:(any) to element appsink:(any)
0:00:02.438696822 1693 0xb7c200 INFO GST_PADS gstutils.c:1009:gst_pad_check_link: trying to link encoder_filter:src and appsink:sink
0:00:02.438866092 1693 0xb7c200 INFO GST_PADS gstutils.c:1523:prepare_link_maybe_ghosting: encoder_filter and appsink in same bin, no need for ghost pads
0:00:02.438925674 1693 0xb7c200 INFO GST_PADS gstpad.c:2316:gst_pad_link_prepare: trying to link encoder_filter:src and appsink:sink
0:00:02.439033850 1693 0xb7c200 INFO GST_PADS gstpad.c:2524:gst_pad_link_full: linked encoder_filter:src and appsink:sink, successful
0:00:02.439078329 1693 0xb7c200 INFO GST_EVENT gstevent.c:1512:gst_event_new_reconfigure: creating reconfigure event
0:00:02.439113121 1693 0xb7c200 INFO GST_EVENT gstpad.c:5670:gst_pad_send_event_unchecked:<encoder_filter:src> Received event on flushing pad. Discarding
0:00:02.439392962 1693 0xb7c200 INFO GST_STATES gstbin.c:2491:gst_bin_element_set_state: current NULL pending VOID_PENDING, desired next READY
0:00:02.439452128 1693 0xb7c200 INFO GST_STATES gstelement.c:2467:gst_element_continue_state: completed state change to READY
0:00:02.439488638 1693 0xb7c200 INFO GST_STATES gstelement.c:2372:_priv_gst_element_state_changed: notifying about state-changed NULL to READY (VOID_PENDING pending)
0:00:02.439562856 1693 0xb7c200 INFO GST_STATES gstbin.c:2939:gst_bin_change_state_func: child 'appsink' changed state to 2(READY) successfully
0:00:02.439615095 1693 0xb7c200 INFO GST_STATES gstbin.c:2491:gst_bin_element_set_state:<encoder_filter> current NULL pending VOID_PENDING, desired next READY
0:00:02.439659313 1693 0xb7c200 INFO GST_STATES gstelement.c:2467:gst_element_continue_state:<encoder_filter> completed state change to READY
0:00:02.439692907 1693 0xb7c200 INFO GST_STATES gstelement.c:2372:_priv_gst_element_state_changed:<encoder_filter> notifying about state-changed NULL to READY (VOID_PENDING pending)
0:00:02.439743687 1693 0xb7c200 INFO GST_STATES gstbin.c:2939:gst_bin_change_state_func: child 'encoder_filter' changed state to 2(READY) successfully
0:00:02.439794729 1693 0xb7c200 INFO GST_STATES gstbin.c:2491:gst_bin_element_set_state: current NULL pending VOID_PENDING, desired next READY
0:00:02.439839207 1693 0xb7c200 INFO GST_STATES gstelement.c:2467:gst_element_continue_state: completed state change to READY
0:00:02.439872905 1693 0xb7c200 INFO GST_STATES gstelement.c:2372:_priv_gst_element_state_changed: notifying about state-changed NULL to READY (VOID_PENDING pending)
0:00:02.439924519 1693 0xb7c200 INFO GST_STATES gstbin.c:2939:gst_bin_change_state_func: child 'h264parse' changed state to 2(READY) successfully
0:00:02.439970248 1693 0xb7c200 INFO GST_STATES gstbin.c:2491:gst_bin_element_set_state: current NULL pending VOID_PENDING, desired next READY
0:00:02.440353786 1693 0xb7c200 INFO v4l2 v4l2_calls.c:592:gst_v4l2_open: Opened device 'mmal service 16.1' (/dev/video0) successfully
0:00:02.440422952 1693 0xb7c200 INFO GST_STATES gstelement.c:2467:gst_element_continue_state: completed state change to READY
0:00:02.440458212 1693 0xb7c200 INFO GST_STATES gstelement.c:2372:_priv_gst_element_state_changed: notifying about state-changed NULL to READY (VOID_PENDING pending)
0:00:02.440510920 1693 0xb7c200 INFO GST_STATES gstbin.c:2939:gst_bin_change_state_func: child 'source' changed state to 2(READY) successfully
0:00:02.440570398 1693 0xb7c200 INFO GST_STATES gstelement.c:2442:gst_element_continue_state: committing state from NULL to READY, pending PLAYING, next PAUSED
0:00:02.440613471 1693 0xb7c200 INFO GST_STATES gstelement.c:2372:_priv_gst_element_state_changed: notifying about state-changed NULL to READY (PLAYING pending)
0:00:02.440664564 1693 0xb7c200 INFO GST_STATES gstelement.c:2449:gst_element_continue_state: continue state change READY to PAUSED, final PLAYING
0:00:02.440737167 1693 0xb7c200 INFO GST_STATES gstbin.c:2491:gst_bin_element_set_state: current READY pending VOID_PENDING, desired next PAUSED
0:00:02.440823000 1693 0xb7c200 INFO GST_STATES gstbin.c:2945:gst_bin_change_state_func: child 'appsink' is changing state asynchronously to PAUSED
0:00:02.440874718 1693 0xb7c200 INFO GST_STATES gstbin.c:2491:gst_bin_element_set_state:<encoder_filter> current READY pending VOID_PENDING, desired next PAUSED
0:00:02.441056123 1693 0xb7c200 INFO GST_STATES gstelement.c:2467:gst_element_continue_state:<encoder_filter> completed state change to PAUSED
0:00:02.441093206 1693 0xb7c200 INFO GST_STATES gstelement.c:2372:_priv_gst_element_state_changed:<encoder_filter> notifying about state-changed READY to PAUSED (VOID_PENDING pending)
0:00:02.441146486 1693 0xb7c200 INFO GST_STATES gstbin.c:2939:gst_bin_change_state_func: child 'encoder_filter' changed state to 3(PAUSED) successfully
0:00:02.441199298 1693 0xb7c200 INFO GST_STATES gstbin.c:2491:gst_bin_element_set_state: current READY pending VOID_PENDING, desired next PAUSED
0:00:02.441930021 1693 0xb7c200 INFO GST_STATES gstelement.c:2467:gst_element_continue_state: completed state change to PAUSED
0:00:02.441996635 1693 0xb7c200 INFO GST_STATES gstelement.c:2372:_priv_gst_element_state_changed: notifying about state-changed READY to PAUSED (VOID_PENDING pending)
0:00:02.442064394 1693 0xb7c200 INFO GST_STATES gstbin.c:2939:gst_bin_change_state_func: child 'h264parse' changed state to 3(PAUSED) successfully
0:00:02.442119810 1693 0xb7c200 INFO GST_STATES gstbin.c:2491:gst_bin_element_set_state: current READY pending VOID_PENDING, desired next PAUSED
0:00:02.442216216 1693 0xb7c200 INFO basesrc gstbasesrc.c:1331:gst_base_src_do_seek: seeking: time segment start=0:00:00.000000000, offset=0:00:00.000000000, stop=99:99:99.999999999, rate=1.000000, applied_rate=1.000000, flags=0x00, time=0:00:00.000000000, base=0:00:00.000000000, position 0:00:00.000000000, duration 99:99:99.999999999
0:00:02.442346735 1693 0xb7c200 INFO task gsttask.c:457:gst_task_set_lock: setting stream lock 0xbd4c3c on task 0xdc2828
0:00:02.442387360 1693 0xb7c200 INFO GST_PADS gstpad.c:6016:gst_pad_start_task:source:src created task 0xdc2828
0:00:02.442714128 1693 0xb7c200 INFO GST_STATES gstelement.c:2467:gst_element_continue_state: completed state change to PAUSED
0:00:02.442756627 1693 0xb7c200 INFO GST_STATES gstelement.c:2372:_priv_gst_element_state_changed: notifying about state-changed READY to PAUSED (VOID_PENDING pending)
0:00:02.442815168 1693 0xb7c200 INFO GST_STATES gstbin.c:2982:gst_bin_change_state_func: child 'source' changed state to 3(PAUSED) successfully without preroll
0:00:02.442879282 1693 0xb7c200 INFO GST_STATES gstelement.c:2442:gst_element_continue_state: committing state from READY to PAUSED, pending PLAYING, next PLAYING
0:00:02.442902563 1693 0xbd7c60 INFO GST_ELEMENT_PADS gstelement.c:915:gst_element_get_static_pad: no such pad 'sink' in element "source"
0:00:02.442923396 1693 0xb7c200 INFO GST_STATES gstelement.c:2372:_priv_gst_element_state_changed: notifying about state-changed READY to PAUSED (PLAYING pending)
0:00:02.443012614 1693 0xb7c200 INFO GST_STATES gstelement.c:2449:gst_element_continue_state: continue state change PAUSED to PLAYING, final PLAYING
0:00:02.443330580 1693 0xbd7c60 INFO v4l2 gstv4l2object.c:1156:gst_v4l2_object_fill_format_list: got 14 format(s):
0:00:02.443336622 1693 0xb7c200 INFO GST_EVENT gstevent.c:1383:gst_event_new_latency: creating latency event 0:00:00.000000000
0:00:02.443391517 1693 0xbd7c60 INFO v4l2 gstv4l2object.c:1162:gst_v4l2_object_fill_format_list: YUYV
0:00:02.443461204 1693 0xbd7c60 INFO v4l2 gstv4l2object.c:1162:gst_v4l2_object_fill_format_list: UYVY
0:00:02.443458391 1693 0xb7c200 INFO bin gstbin.c:2768:gst_bin_do_latency_func: configured latency of 0:00:00.000000000
0:00:02.443518912 1693 0xbd7c60 INFO v4l2 gstv4l2object.c:1162:gst_v4l2_object_fill_format_list: YU12
0:00:02.443577453 1693 0xb7c200 INFO GST_STATES gstbin.c:2491:gst_bin_element_set_state: current READY pending PAUSED, desired next PLAYING
0:00:02.443586671 1693 0xbd7c60 INFO v4l2 gstv4l2object.c:1162:gst_v4l2_object_fill_format_list: YV12
0:00:02.443626254 1693 0xb7c200 INFO GST_STATES gstbin.c:2945:gst_bin_change_state_func: child 'appsink' is changing state asynchronously to PLAYING
0:00:02.443661462 1693 0xbd7c60 INFO v4l2 gstv4l2object.c:1162:gst_v4l2_object_fill_format_list: JPEG
0:00:02.443687295 1693 0xb7c200 INFO GST_STATES gstbin.c:2491:gst_bin_element_set_state:<encoder_filter> current PAUSED pending VOID_PENDING, desired next PLAYING
0:00:02.443729118 1693 0xbd7c60 INFO v4l2 gstv4l2object.c:1162:gst_v4l2_object_fill_format_list: MJPG
0:00:02.443753180 1693 0xb7c200 INFO GST_STATES gstelement.c:2467:gst_element_continue_state:<encoder_filter> completed state change to PLAYING
0:00:02.443796513 1693 0xbd7c60 INFO v4l2 gstv4l2object.c:1162:gst_v4l2_object_fill_format_list: BGR4
0:00:02.443813336 1693 0xb7c200 INFO GST_STATES gstelement.c:2372:_priv_gst_element_state_changed:<encoder_filter> notifying about state-changed PAUSED to PLAYING (VOID_PENDING pending)
0:00:02.443864169 1693 0xbd7c60 INFO v4l2 gstv4l2object.c:1162:gst_v4l2_object_fill_format_list: BGR3
0:00:02.443894533 1693 0xb7c200 INFO GST_STATES gstbin.c:2939:gst_bin_change_state_func: child 'encoder_filter' changed state to 4(PLAYING) successfully
0:00:02.443932501 1693 0xbd7c60 INFO v4l2 gstv4l2object.c:1162:gst_v4l2_object_fill_format_list: RGB3
0:00:02.443959220 1693 0xb7c200 INFO GST_STATES gstbin.c:2491:gst_bin_element_set_state: current PAUSED pending VOID_PENDING, desired next PLAYING
0:00:02.443998907 1693 0xbd7c60 INFO v4l2 gstv4l2object.c:1162:gst_v4l2_object_fill_format_list: NV21
0:00:02.444020209 1693 0xb7c200 INFO GST_STATES gstelement.c:2467:gst_element_continue_state: completed state change to PLAYING
0:00:02.444066354 1693 0xbd7c60 INFO v4l2 gstv4l2object.c:1162:gst_v4l2_object_fill_format_list: NV12
0:00:02.444083281 1693 0xb7c200 INFO GST_STATES gstelement.c:2372:_priv_gst_element_state_changed: notifying about state-changed PAUSED to PLAYING (VOID_PENDING pending)
0:00:02.444132604 1693 0xbd7c60 INFO v4l2 gstv4l2object.c:1162:gst_v4l2_object_fill_format_list: VYUY
0:00:02.444162135 1693 0xb7c200 INFO GST_STATES gstbin.c:2939:gst_bin_change_state_func: child 'h264parse' changed state to 4(PLAYING) successfully
0:00:02.444199895 1693 0xbd7c60 INFO v4l2 gstv4l2object.c:1162:gst_v4l2_object_fill_format_list: YVYU
0:00:02.444232967 1693 0xb7c200 INFO GST_STATES gstelement.c:2467:gst_element_continue_state: completed state change to PLAYING
0:00:02.444266873 1693 0xbd7c60 INFO v4l2 gstv4l2object.c:1162:gst_v4l2_object_fill_format_list: H264
0:00:02.444283800 1693 0xb7c200 INFO GST_STATES gstelement.c:2372:_priv_gst_element_state_changed: notifying about state-changed PAUSED to PLAYING (VOID_PENDING pending)
0:00:02.444364320 1693 0xb7c200 INFO GST_STATES gstbin.c:2939:gst_bin_change_state_func: child 'source' changed state to 4(PLAYING) successfully
0:00:02.445441445 1693 0xbd7c60 INFO v4l2 gstv4l2object.c:3984:gst_v4l2_object_get_caps: probed caps: video/x-raw, format=(string)YUY2, width=(int)[ 32, 3280, 2 ], height=(int)[ 32, 2464, 2 ], pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, colorimetry=(string){ bt601 }, framerate=(fraction)[ 1/1, 90/1 ]; video/x-raw, format=(string)UYVY, width=(int)[ 32, 3280, 2 ], height=(int)[ 32, 2464, 2 ], pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, colorimetry=(string){ bt601 }, framerate=(fraction)[ 1/1, 90/1 ]; video/x-raw, format=(string)I420, width=(int)[ 32, 3280, 2 ], height=(int)[ 32, 2464, 2 ], pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, colorimetry=(string){ bt601 }, framerate=(fraction)[ 1/1, 90/1 ]; video/x-raw, format=(string)YV12, width=(int)[ 32, 3280, 2 ], height=(int)[ 32, 2464, 2 ], pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, colorimetry=(string){ bt601 }, framerate=(fraction)[ 1/1, 90/1 ]; image/jpeg, width=(int)[ 32, 3280, 2 ], height=(int)[ 32, 2464, 2 ], pixel-aspect-ratio=(fraction)1/1, colorimetry=(string){ 1:4:7:1 }, framerate=(fraction)[ 1/1, 90/1 ]; image/jpeg, width=(int)[ 32, 3280, 2 ], height=(int)[ 32, 2464, 2 ], pixel-aspect-ratio=(fraction)1/1, colorimetry=(string){ bt601 }, framerate=(fraction)[ 1/1, 90/1 ]; video/x-raw, format=(string)BGRx, width=(int)[ 32, 3280, 2 ], height=(int)[ 32, 2464, 2 ], pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, colorimetry=(string){ 1:1:5:4 }, framerate=(fraction)[ 1/1, 90/1 ]; video/x-raw, format=(string)BGR, width=(int)[ 32, 3280, 2 ], height=(int)[ 32, 2464, 2 ], pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, colorimetry=(string){ 1:1:5:4 }, framerate=(fraction)[ 1/1, 90/1 ]; video/x-raw, format=(string)RGB, width=(int)[ 32, 3280, 2 ], height=(int)[ 32, 2464, 2 ], pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, colorimetry=(string){ sRGB }, framerate=(fraction)[ 1/1, 90/1 ]; video/x-raw, format=(string)NV21, width=(int)[ 32, 3280, 2 ], height=(int)[ 32, 2464, 2 ], pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, colorimetry=(string){ bt601 }, framerate=(fraction)[ 1/1, 90/1 ]; video/x-raw, format=(string)NV12, width=(int)[ 32, 3280, 2 ], height=(int)[ 32, 2464, 2 ], pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, colorimetry=(string){ bt601 }, framerate=(fraction)[ 1/1, 90/1 ]; video/x-raw, format=(string)YVYU, width=(int)[ 32, 3280, 2 ], height=(int)[ 32, 2464, 2 ], pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, colorimetry=(string){ bt601 }, framerate=(fraction)[ 1/1, 90/1 ]; video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, width=(int)[ 32, 3280, 2 ], height=(int)[ 32, 2464, 2 ], pixel-aspect-ratio=(fraction)1/1, colorimetry=(string){ bt601 }, framerate=(fraction)[ 1/1, 90/1 ]
0:00:02.459025377 1693 0xbd7c60 INFO v4l2 gstv4l2object.c:3521:gst_v4l2_object_set_format_full: Set capture framerate to 30/1
0:00:02.459143918 1693 0xbd7c60 INFO v4l2 gstv4l2object.c:2880:gst_v4l2_object_setup_pool: accessing buffers via mode 2
0:00:02.459814380 1693 0xbd7c60 INFO v4l2bufferpool gstv4l2bufferpool.c:557:gst_v4l2_buffer_pool_set_config:source:pool:src increasing minimum buffers to 2
0:00:02.459893494 1693 0xbd7c60 INFO v4l2bufferpool gstv4l2bufferpool.c:570:gst_v4l2_buffer_pool_set_config:source:pool:src reducing maximum buffers to 32
0:00:02.460008389 1693 0xbd7c60 INFO GST_EVENT gstevent.c:809:gst_event_new_caps: creating caps event video/x-h264, width=(int)1920, height=(int)1080, framerate=(fraction)30/1, stream-format=(string)byte-stream, alignment=(string)au, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt601
0:00:02.460886505 1693 0xbd7c60 INFO v4l2bufferpool gstv4l2bufferpool.c:570:gst_v4l2_buffer_pool_set_config:source:pool:src reducing maximum buffers to 32
0:00:02.468725024 1693 0xbd7c60 WARN v4l2bufferpool gstv4l2bufferpool.c:759:gst_v4l2_buffer_pool_start:source:pool:src Uncertain or not enough buffers, enabling copy threshold
0:00:03.178955867 1693 0xbd7c60 WARN v4l2bufferpool gstv4l2bufferpool.c:1212:gst_v4l2_buffer_pool_dqbuf:source:pool:src Driver should never set v4l2_buffer.field to ANY
0:00:03.179107897 1693 0xbd7c60 INFO v4l2src gstv4l2src.c:825:gst_v4l2src_create: sync to 0:00:00.033333333 out ts 0:00:00.728046740
0:00:03.179253364 1693 0xbd7c60 INFO GST_EVENT gstevent.c:890:gst_event_new_segment: creating segment event time segment start=0:00:00.000000000, offset=0:00:00.000000000, stop=99:99:99.999999999, rate=1.000000, applied_rate=1.000000, flags=0x00, time=0:00:00.000000000, base=0:00:00.000000000, position 0:00:00.000000000, duration 99:99:99.999999999
0:00:03.179551747 1693 0xbd7c60 INFO basesrc gstbasesrc.c:2836:gst_base_src_loop: marking pending DISCONT
0:00:03.180394760 1693 0xbd7c60 INFO baseparse gstbaseparse.c:3987:gst_base_parse_set_latency: min/max latency 0:00:00.033333333, 0:00:00.033333333
0:00:03.180929963 1693 0xbd7c60 INFO GST_EVENT gstevent.c:809:gst_event_new_caps: creating caps event video/x-h264, width=(int)1920, height=(int)1080, framerate=(fraction)30/1, stream-format=(string)avc, alignment=(string)au, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt601, interlace-mode=(string)progressive, parsed=(boolean)true, profile=(string)high, level=(string)4, codec_data=(buffer)01640028ffe1001027640028ac2b403c0113f2c03c489a8001000528ee025cb0
0:00:03.181588446 1693 0xbd7c60 INFO basetransform gstbasetransform.c:1299:gst_base_transform_setcaps:<encoder_filter> reuse caps
0:00:03.181734747 1693 0xbd7c60 INFO GST_EVENT gstevent.c:809:gst_event_new_caps: creating caps event video/x-h264, width=(int)1920, height=(int)1080, framerate=(fraction)30/1, stream-format=(string)avc, alignment=(string)au, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt601, interlace-mode=(string)progressive, parsed=(boolean)true, profile=(string)high, level=(string)4, codec_data=(buffer)01640028ffe1001027640028ac2b403c0113f2c03c489a8001000528ee025cb0
0:00:03.182108285 1693 0xbd7c60 INFO GST_EVENT gstevent.c:809:gst_event_new_caps: creating caps event video/x-h264, width=(int)1920, height=(int)1080, framerate=(fraction)30/1, stream-format=(string)avc, alignment=(string)au, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt601, interlace-mode=(string)progressive, parsed=(boolean)true, profile=(string)high, level=(string)4, codec_data=(buffer)01640028ffe1001027640028ac2b403c0113f2c03c489a8001000528ee025cb0
0:00:03.183424210 1693 0xbd7c60 INFO GST_STATES gstbin.c:3418:bin_handle_async_done: setting state from PAUSED to PAUSED, pending PLAYING
0:00:03.183600927 1693 0xbd7c60 INFO GST_STATES gstbin.c:3438:bin_handle_async_done: continue state change, pending PLAYING
0:00:03.183920038 1693 0x54e03630 INFO GST_STATES gstbin.c:3235:gst_bin_continue_func: continue state change PAUSED to PLAYING, final PLAYING
0:00:03.184269149 1693 0x54e03630 INFO GST_EVENT gstevent.c:1383:gst_event_new_latency: creating latency event 0:00:00.000000000
0:00:03.184546126 1693 0x54e03630 INFO bin gstbin.c:2768:gst_bin_do_latency_func: configured latency of 0:00:00.000000000
0:00:03.184732635 1693 0x54e03630 INFO GST_STATES gstbin.c:2491:gst_bin_element_set_state: current PAUSED pending VOID_PENDING, desired next PLAYING
0:00:03.184849144 1693 0x54e03630 INFO GST_STATES gstelement.c:2467:gst_element_continue_state: completed state change to PLAYING
0:00:03.184926539 1693 0x54e03630 INFO GST_STATES gstelement.c:2372:_priv_gst_element_state_changed: notifying about state-changed PAUSED to PLAYING (VOID_PENDING pending)
0:00:03.185223411 1693 0x54e03630 INFO GST_STATES gstbin.c:2939:gst_bin_change_state_func: child 'appsink' changed state to 4(PLAYING) successfully

0:00:03.185345389 1693 0x54e03630 INFO GST_STATES gstbin.c:2491:gst_bin_element_set_state:<encoder_filter> current PLAYING pending VOID_PENDING, desired next PLAYING
0:00:03.185432003 1693 0x54e03630 INFO GST_STATES gstbin.c:2608:gst_bin_element_set_state:<encoder_filter> skipping transition from PLAYING to PLAYING
0:00:03.185507002 1693 0x54e03630 INFO GST_STATES gstbin.c:2939:gst_bin_change_state_func: child 'encoder_filter' changed state to 4(PLAYING) successfully
0:00:03.185608772 1693 0x54e03630 INFO GST_STATES gstbin.c:2491:gst_bin_element_set_state: current PLAYING pending VOID_PENDING, desired next PLAYING
0:00:03.185690438 1693 0x54e03630 INFO GST_STATES gstbin.c:2608:gst_bin_element_set_state: skipping transition from PLAYING to PLAYING
0:00:03.185762885 1693 0x54e03630 INFO GST_STATES gstbin.c:2939:gst_bin_change_state_func: child 'h264parse' changed state to 4(PLAYING) successfully
kinesisVideoStreamFormatChanged(): Stream format changed.DEBUG - putStreamHandler invoked
0:00:03.185852468 1693 0x54e03630 INFO GST_STATES gstbin.c:2491:gst_bin_element_set_state: current PLAYING pending VOID_PENDING, desired next PLAYING
0:00:03.185932988 1693 0x54e03630 INFO GST_STATES gstbin.c:2608:gst_bin_element_set_state: skipping transition from PLAYING to PLAYING
0:00:03.186003612 1693 0x54e03630 INFO GST_STATES gstbin.c:2939:gst_bin_change_state_func: child 'source' changed state to 4(PLAYING) successfully
0:00:03.186106892 1693 0x54e03630 INFO GST_STATES gstelement.c:2467:gst_element_continue_state: completed state change to PLAYING
0:00:03.186175485 1693 0x54e03630 INFO GST_STATES gstelement.c:2372:_priv_gst_element_state_changed: notifying about state-changed PAUSED to PLAYING (VOID_PENDING pending)
DEBUG - Created a new PutMedia request with stream upload handle: 0

putStreamResultEvent(): Put stream result event.ERROR - Failed to submit frame to Kinesis Video client. status: 0x32000011 decoding timestamp: 7360151 presentation timestamp: 7280467
INFO - Creating new connection for Kinesis Video stream: Kinesis_user
Dropped frame!
INFO - Refreshing credentials. Force refreshing: 0 Now time is: 1520975479 Expiration: 0
0:00:03.236130631 1693 0xbd7c60 WARN v4l2src gstv4l2src.c:770:gst_v4l2src_create: Timestamp going backward, ignoring driver timestamps
0:00:03.236259015 1693 0xbd7c60 INFO v4l2src gstv4l2src.c:825:gst_v4l2src_create: sync to 0:00:00.066666666 out ts 0:00:00.759532030
DEBUG - streamDataAvailableHandler invoked for stream: Kinesis_user and stream upload handle: 0
DEBUG - Note data received: duration(100ns): 100000 bytes: 962 for stream handle: 0

getKinesisVideoMetrics(): Get the memory metrics size.
getKinesisVideoStreamMetrics(): Get stream metrics for Stream 0000000000da7592.DEBUG - Kinesis Video client and stream metrics
>> Overall storage size: 536870912
>> Available storage size: 536869925
>> Allocated storage size: 987
>> Total view allocation size: 144064
>> Total streams frame rate: 30
>> Total streams transfer rate: 4194304
>> Current view duration: 100000
>> Overall view duration: 100000
>> Current view size: 962
>> Overall view size: 962
>> Current frame rate: 30
>> Current transfer rate: 4194304
0:00:03.261620543 1693 0xbd7c60 INFO v4l2src gstv4l2src.c:825:gst_v4l2src_create: sync to 0:00:00.099999999 out ts 0:00:00.785020535
ERROR - Failed to submit frame to Kinesis Video client. status: 0x32000002 decoding timestamp: 8185625 presentation timestamp: 7850205
Dropped frame!

from amazon-kinesis-video-streams-producer-sdk-cpp.

MushMal avatar MushMal commented on July 24, 2024

Ok, I see what's going on.. Some encoders act weird and they produce an Idr frame (in our case we treat that as a Key-frame) with different Pts and Dts (presentation, decoding timestamps). This is odd but it seems to be the case. As a result, the Key-frame fails to be pushed to the SDK with 0x32000011

utStreamResultEvent(): Put stream result event.ERROR - Failed to submit frame to Kinesis Video client. status: 0x32000011 decoding timestamp: 7360151 presentation timestamp: 7280467

which then leads to a non-key frame to fail.

While we investigate this issue, could I ask you to verify whether you have the latest sample code? We did make a workaround for this particular case in kinesis_video_gstreamer_sample_app.cpp LN 185:

if (data->h264_stream_supported) { buffer->pts = buffer->dts; }

from amazon-kinesis-video-streams-producer-sdk-cpp.

MushMal avatar MushMal commented on July 24, 2024

@matszal - is there any progress on this? Can you sync-up the latest codebase? Please update the thread so we can see how best to resolve this issue.

from amazon-kinesis-video-streams-producer-sdk-cpp.

matszal avatar matszal commented on July 24, 2024

@MushMal I had to leave it and worked on something else. Will come back to this at some point

from amazon-kinesis-video-streams-producer-sdk-cpp.

MushMal avatar MushMal commented on July 24, 2024

Thanks for the update. I am going to close this issue at this time. Please ping us if anything comes up.

from amazon-kinesis-video-streams-producer-sdk-cpp.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.