{"id":261460,"date":"2015-07-14T23:50:02","date_gmt":"2015-07-14T19:50:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=261460"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=261460","title":{"rendered":"\u042d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0438\u0434\u0435\u043e \u0432 Linux c Nvidia NVENC: \u0447\u0430\u0441\u0442\u044c 2, \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f"},"content":{"rendered":"<p>     \t\u0412 <a href=\"http:\/\/habrahabr.ru\/post\/262507\/\">\u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438<\/a> \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u043e \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0432\u0438\u0434\u0435\u043e \u0432 Linux \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Nvidia NVENC. \u041a\u0430\u043a \u0443\u0436\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u043e\u0441\u044c \u0440\u0430\u043d\u0435\u0435, Nvidia \u0434\u043b\u044f \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u043d\u044b\u0445 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043e \u0434\u0432\u0443\u0445 \u0441\u0435\u0441\u0441\u0438\u0439 \u043d\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0443. \u0414\u0430\u043d\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 \u0431\u043e\u0440\u044c\u0431\u0435 \u0441 \u044d\u0442\u0438\u043c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435\u043c.<a name=\"habracut\"><\/a><\/p>\n<h4>\u041e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435<\/h4>\n<p>  \u0412\u0441\u0451 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c\u043e\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0435 \u0441 GTX 970 \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c FFmpeg, \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439, \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u043d\u0435\u0435.<\/p>\n<h4>\u0412\u043d\u0435\u0448\u043d\u0438\u0435 \u043f\u0440\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f<\/h4>\n<p>  \u041f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u043e\u043b\u0435\u0435 \u0434\u0432\u0443\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0432\u0438\u0434\u0435\u043e FFmpeg \u0432\u044b\u0434\u0430\u0441\u0442 \u043e\u0448\u0438\u0431\u043a\u0443:  <\/p>\n<pre> ... [nvenc @ 0x3187200] OpenEncodeSessionEx failed: 0xa - invalid license key? ... Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height <\/pre>\n<p>  \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0438 \u0443\u0434\u043e\u0431\u043d\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u044d\u0442\u0443 \u043e\u0448\u0438\u0431\u043a\u0443, \u044f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b \u0434\u0432\u0430 \u0440\u0430\u0437\u0430 \u043f\u0435\u0440\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 ffmpeg \u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0430 \u043f\u0430\u0443\u0437\u0443, \u043f\u043e\u0441\u043b\u0430\u0432 \u0435\u043c\u0443 SIGSTOP (Ctrl+Z \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435):  <\/p>\n<pre> $ \/usr\/local\/bin\/ffmpeg -y -i input.mov -vcodec nvenc output1.mp4 ... Stream mapping:   Stream #0:1 -&gt; #0:0 (mpeg4 (native) -&gt; h264 (nvenc))   Stream #0:0 -&gt; #0:1 (aac (native) -&gt; aac (libfdk_aac)) Press [q] to stop, [?] for help frame=   81 fps= 80 q=0.0 size=    1362kB time=00:00:03.24 bitrate=3444.9kbits\/s [1]+  Stopped                 \/usr\/local\/bin\/ffmpeg -y -i input.mov -vcodec nvenc out1.mp4 $ \/usr\/local\/bin\/ffmpeg -y -i input.mov -vcodec nvenc output2.mp4 ... Stream mapping:   Stream #0:1 -&gt; #0:0 (mpeg4 (native) -&gt; h264 (nvenc))   Stream #0:0 -&gt; #0:1 (aac (native) -&gt; aac (libfdk_aac)) Press [q] to stop, [?] for help frame=   81 fps= 80 q=0.0 size=    1362kB time=00:00:03.24 bitrate=3444.9kbits\/s [2]+  Stopped                 \/usr\/local\/bin\/ffmpeg -y -i input.mov -vcodec nvenc out1.mp4 <\/pre>\n<h4>ltrace<\/h4>\n<p>  \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u044d\u0442\u043e \u043c\u0435\u0441\u0442\u043e \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u0435\u0435:  <\/p>\n<pre> $ ltrace \/usr\/local\/bin\/ffmpeg -y -i input.mov -vcodec nvenc out3.mp4 2&gt;&1 | less ... dlsym(0x313e360, &quot;cuInit&quot;)                       = 0x7f93974182c0 dlsym(0x313e360, &quot;cuDeviceGetCount&quot;)             = 0x7f9397418760 dlsym(0x313e360, &quot;cuDeviceGet&quot;)                  = 0x7f93974185c0 dlsym(0x313e360, &quot;cuDeviceGetName&quot;)              = 0x7f93974188e0 dlsym(0x313e360, &quot;cuDeviceComputeCapability&quot;)    = 0x7f9397418f80 dlsym(0x313e360, &quot;cuCtxCreate_v2&quot;)               = 0x7f9397419940 dlsym(0x313e360, &quot;cuCtxPopCurrent_v2&quot;)           = 0x7f9397419df0 dlsym(0x313e360, &quot;cuCtxDestroy_v2&quot;)              = 0x7f9397419af0 dlopen(&quot;libnvidia-encode.so.1&quot;, 1)               = 0x3231970 dlsym(0x3231970, &quot;NvEncodeAPICreateInstance&quot;)    = 0x7f93970d4370 posix_memalign(0x7fffb429d490, 32, 640, 0x7fffb429d3f8) = 0 memset(0x3141420, '\\0', 640)                     = 0x3141420 free(0)                                          = &lt;void&gt; pthread_mutex_lock(0x19a90e0, 8, 0xf8f340, 0x7fffb429d3f8) = 0 __vsnprintf_chk(0x7fffb429c3b4, 1004, 1, -1)     = 20 __vsnprintf_chk(0x7fffb429cbb4, 1004, 1, -1)     = 55 __snprintf_chk(0x7fffb429cfa0, 1024, 1, 1024)    = 75 strcmp(&quot;[nvenc @ 0x3187200] OpenEncodeSe&quot;..., &quot;\\n&quot;) = 81 __strcpy_chk(0x19a8cc0, 0x7fffb429cfa0, 1024, 0) = 0x19a8cc0 fputs(&quot;[nvenc @ 0x3187200] &quot;, 0x7f93a554e1c0[nvenc @ 0x3187200] )    = 1 fputs(&quot;OpenEncodeSessionEx failed: 0xa &quot;..., 0x7f93a554e1c0OpenEncodeSessionEx failed: 0xa - invalid license key? ) = 1 pthread_mutex_unlock(0x19a90e0, 0, 0x7fffb429cbb4, -1) = 0 ... <\/pre>\n<p>  \u0412\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043a\u0430\u043a\u0430\u044f-\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0430 \u0432\u044b\u0432\u0435\u043b\u0430\u0441\u044c, \u043d\u043e \u0447\u0442\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u043b\u043e\u0441\u044c \u043d\u0435 \u0432\u0438\u0434\u043d\u043e \u0438\u0437-\u0437\u0430 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0438 \u0435\u0451 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 (\u0444\u0443\u043d\u043a\u0446\u0438\u0439).<\/p>\n<h4>\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 FFmpeg<\/h4>\n<p>  \u041f\u043e\u0438\u0449\u0435\u043c \u044d\u0442\u043e \u043c\u0435\u0441\u0442\u043e \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u0445 \u0441\u0430\u043c\u043e\u0433\u043e FFmpeg, \u0447\u0442\u043e\u0431\u044b \u0432\u0437\u044f\u0442\u044c \u0435\u0433\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u043e\u0439.  <\/p>\n<pre> ~\/ffmpeg-2.7.1$ fgrep -r OpenEncodeSessionEx ... libavcodec\/nvenc.c:606:    nv_status = p_nvenc-&gt;nvEncOpenEncodeSessionEx(&encode_session_params, &ctx-&gt;nvencoder); libavcodec\/nvenc.c:609:        av_log(avctx, AV_LOG_FATAL, &quot;OpenEncodeSessionEx failed: 0x%x - invalid license key?\\n&quot;, (int)nv_status); ... <\/pre>\n<p>  \u0412\u0441\u0451 \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0442\u0443\u0442 \u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043c \u0431\u0440\u0435\u0439\u043a\u043f\u043e\u0438\u043d\u0442.<\/p>\n<h4>\u0421\u0432\u0435\u0442\u043b\u044b\u0439 GDB<\/h4>\n<p>  GNU Debugger \u2014 \u044d\u0442\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u044e\u043d\u0438\u043a\u0441\u043e\u0432\u044b\u0439 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a, \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043e\u0442\u043b\u0430\u0436\u0438\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0438 \u043d\u0435 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043e\u0448\u0438\u0431\u043a\u0438.<\/p>\n<p>  \u0427\u0442\u043e\u0431\u044b \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0441\u043e\u043e\u0442\u043d\u043e\u0441\u0438\u0442\u044c \u0435\u0433\u043e \u0441 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c, \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u044b\u043b\u043e \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0441 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u043c\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u043c\u0438. \u041e\u043d\u0438, \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u043a\u043e\u0434\u043e\u0432.<\/p>\n<p>  \u0412 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0434\u0438\u0441\u0442\u0440\u0438\u0442\u0443\u0431\u0438\u0432\u043e\u0432 \u043f\u0430\u043a\u0435\u0442\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0441 \u043e\u0431\u0440\u0435\u0437\u0430\u043d\u043d\u043e\u0439 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u0438 \u0434\u043b\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430. \u0412 ubuntu \u044d\u0442\u043e, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u043f\u0430\u043a\u0435\u0442\u044b \u0441 \u0441\u0443\u0444\u0444\u0438\u043a\u0441\u043e\u043c -dbg. \u0412 centos \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0441 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u043c\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u043c\u0438 \u0438 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u043e\u0439 debuginfo-install \u0438\u0437 \u0441\u043e\u0441\u0442\u0430\u0432\u0430 yum-utils, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0434\u043b\u044f \u043f\u0430\u043a\u0435\u0442\u0430 \u0438 \u0435\u0433\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439.<\/p>\n<p>  \u0412 \u043d\u0430\u0448\u0435\u043c \u0436\u0435 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u0441\u0430\u043c\u043e\u0441\u0431\u043e\u0440\u043d\u044b\u043c FFmpeg, \u043d\u0435\u043e\u0431\u0440\u0435\u0437\u0430\u043d\u043d\u044b\u0439 \u0431\u0438\u043d\u0430\u0440\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0432 \u0435\u0433\u043e \u0441\u0431\u043e\u0440\u043e\u0447\u043d\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u043f\u043e\u0434 \u0438\u043c\u0435\u043d\u0435\u043c ffmpeg_g. \u041c\u044b \u043c\u043e\u0436\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u043f\u043e\u0434 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u043e\u043c \u0438 \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0431\u0440\u0435\u0439\u043a\u043f\u043e\u0438\u043d\u0442 \u043d\u0430 \u043d\u0443\u0436\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u0447\u043a\u0443 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043a\u043e\u0434\u0435.  <\/p>\n<pre> # gdb ffmpeg-2.7.1\/ffmpeg_g GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1 Copyright (C) 2014 Free Software Foundation, Inc. ... Reading symbols from ffmpeg-2.7.1\/ffmpeg_g...done. (gdb) <\/pre>\n<p>  \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0431\u0440\u0435\u0439\u043a\u043f\u043e\u0438\u043d\u0442 \u043d\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0435\u0435 \u043d\u0430\u0441 \u043c\u0435\u0441\u0442\u043e:  <\/p>\n<pre> (gdb) break nvenc.c:606 Breakpoint 1 at 0x44a890: file libavcodec\/nvenc.c, line 606. <\/pre>\n<p>  \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443, \u0443\u043a\u0430\u0437\u0430\u0432 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0447\u0435\u0440\u0435\u0437 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u043a\u043e\u043c\u0430\u043d\u0434\u0435 run:  <\/p>\n<pre> (gdb) run -i in.mov -vcodec nvenc out3.mp4 ... Breakpoint 1, nvenc_encode_init (avctx=0x1b806e0) at libavcodec\/nvenc.c:606 606         nv_status = p_nvenc-&gt;nvEncOpenEncodeSessionEx(&encode_session_params, &ctx-&gt;nvencoder); (gdb) list 601         } 602 603         encode_session_params.device = ctx-&gt;cu_context; 604         encode_session_params.deviceType = NV_ENC_DEVICE_TYPE_CUDA; 605 606         nv_status = p_nvenc-&gt;nvEncOpenEncodeSessionEx(&encode_session_params, &ctx-&gt;nvencoder); 607         if (nv_status != NV_ENC_SUCCESS) { 608             ctx-&gt;nvencoder = NULL; 609             av_log(avctx, AV_LOG_FATAL, &quot;OpenEncodeSessionEx failed: 0x%x - invalid license key?\\n&quot;, (int)nv_status); 610             res = AVERROR_EXTERNAL; (gdb)  <\/pre>\n<p>  \u0411\u0440\u0435\u0439\u043a\u043f\u043e\u0438\u043d\u0442 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0438 \u043c\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u0441\u0442\u0438\u0433\u043b\u0438 \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430 \u0432 \u043a\u043e\u0434\u0435. \u0414\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u043d\u0430\u0436\u0430\u0442\u0438\u0435\u043c Ctrl+X, Ctrl+A \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c GDB \u0432 \u0440\u0435\u0436\u0438\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0433\u043e \u044d\u043a\u0440\u0430\u043d\u0430 \u0441 \u044d\u043a\u0440\u0430\u043d\u043e\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430.<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/cc9\/5dd\/232\/cc95dd23241c4e3b83133273735c77e7.png\"\/><br \/>  \u041f\u0440\u043e\u0439\u0434\u0451\u043c \u043a\u043e\u0434 \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u043e \u0434\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.  <\/p>\n<pre> 606         nv_status = p_nvenc-&gt;nvEncOpenEncodeSessionEx(&encode_session_params, &ctx-&gt;nvencoder); (gdb) step 603         encode_session_params.device = ctx-&gt;cu_context; (gdb) step 606         nv_status = p_nvenc-&gt;nvEncOpenEncodeSessionEx(&encode_session_params, &ctx-&gt;nvencoder); (gdb) step 607         if (nv_status != NV_ENC_SUCCESS) { <\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0432\u0432\u0435\u0434\u0451\u043d\u043d\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443, \u043a \u0441\u043b\u043e\u0432\u0443, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u043d\u0430\u0436\u0430\u0442\u0438\u0435\u043c Enter. \u0412\u043e\u0437\u0432\u0440\u0430\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e nv_status. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u0436\u0435 \u0432 \u043d\u0435\u0439:  <\/p>\n<pre> (gdb) info locals ... nv_status = NV_ENC_ERR_OUT_OF_MEMORY ... <\/pre>\n<p>  \u0423\u0431\u0438\u0432\u0430\u0435\u043c \u0432\u0438\u0441\u044f\u0449\u0438\u0435 ffmpeg-\u0438, \u0432 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 run. \u042d\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442 \u0435\u0451 \u0441 \u0442\u0435\u043c\u0438 \u0436\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438. \u0414\u043e\u0439\u0434\u044f \u0434\u043e \u0442\u043e\u0433\u043e \u0436\u0435 \u043c\u0435\u0441\u0442\u0430, \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c:  <\/p>\n<pre> (gdb) info locals ... nv_status = NV_ENC_SUCCESS ... <\/pre>\n<p>  \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u0435\u0441\u0441\u0438\u0438 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 NV_ENC_SUCCESS (0) \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0443\u0441\u043f\u0435\u0445\u0430, \u043b\u0438\u0431\u043e NV_ENC_ERR_OUT_OF_MEMORY (10), \u0435\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0443\u0436\u0435 \u043e\u0442\u043a\u0440\u044b\u043b 2 \u0441\u0435\u0441\u0441\u0438\u0438 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0421\u043f\u0443\u0441\u0442\u0438\u043c\u0441\u044f \u0432\u0433\u043b\u0443\u0431\u044c \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.<\/p>\n<h4>\u0422\u0451\u043c\u043d\u044b\u0439 GDB<\/h4>\n<p>  \u0414\u043e\u0439\u0434\u0451\u043c \u0434\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u0441\u043f\u0443\u0441\u0442\u0438\u043c\u0441\u044f \u0432\u0433\u043b\u0443\u0431\u044c \u043d\u0435\u0451.  <\/p>\n<pre> Breakpoint 1, nvenc_encode_init (avctx=0x1b806e0) at libavcodec\/nvenc.c:606 606         nv_status = p_nvenc-&gt;nvEncOpenEncodeSessionEx(&encode_session_params, &ctx-&gt;nvencoder); (gdb) layout asm <\/pre>\n<p>  \u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 GDB \u043f\u0440\u0438\u043c\u0435\u0442 \u0432\u0438\u0434:<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/03b\/b45\/041\/03bb450413a544d58026c5b2410a7d34.png\"\/><br \/>  \u041f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0435\u0440\u0435\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u044d\u043a\u0440\u0430\u043d, \u0435\u0441\u043b\u0438 \u043e\u043d \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0437\u0430\u043c\u0443\u0441\u043e\u0440\u0435\u043d, \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0436\u0430\u0442\u0438\u0435\u043c Ctrl+L.<\/p>\n<p>  \u0423\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u043e\u0438\u0442 \u043d\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0434 \u0435\u0451 \u0432\u044b\u0437\u043e\u0432\u043e\u043c. \u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u0441\u044f \u0432\u0433\u043b\u0443\u0431\u044c:  <\/p>\n<pre> (gdb) set step-mode on (gdb) step ... <\/pre>\n<p>  \u041e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u0437 \/usr\/lib\/x86_64-linux-gnu\/libnvidia-encode.so.1:  <\/p>\n<pre>   &gt;|0x7fffe289b010  mov    %rbp,-0x20(%rsp)                                                                                                                                       |    |0x7fffe289b015  mov    %r12,-0x18(%rsp)                                                                                                                                       |    |0x7fffe289b01a  mov    $0x6,%ebp                                                                                                                                              |    |0x7fffe289b01f  mov    %rbx,-0x28(%rsp)                                                                                                                                       |    |0x7fffe289b024  mov    %r13,-0x10(%rsp)                                                                                                                                       |    |0x7fffe289b029  mov    %rsi,%r12                                                                                                                                              |    |0x7fffe289b02c  mov    %r14,-0x8(%rsp)                                                                                                                                        |    |0x7fffe289b031  sub    $0xa8,%rsp                                                                                                                                             |    |0x7fffe289b038  test   %rdi,%rdi                                                                                                                                              |    |0x7fffe289b03b  sete   %dl                                                                                                                                                    |    |0x7fffe289b03e  test   %rsi,%rsi                                                                                                                                              |    |0x7fffe289b041  sete   %al                                                                                                                                                    |    |0x7fffe289b044  or     %al,%dl                                                                                                                                                |    |0x7fffe289b046  jne    0x7fffe289b060                                                                                                                                         |    |0x7fffe289b048  mov    (%rdi),%eax <\/pre>\n<p>  \u0422\u0430\u043a \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043c \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u043e \u0432\u0441\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u044f \u043d\u0430 \u0431\u0443\u043c\u0430\u0436\u043a\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432. \u0417\u0430\u0445\u043e\u0434\u044f \u0432 \u0432\u044b\u0437\u043e\u0432\u044b \u0434\u0440\u0443\u0433\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0443\u0433\u043b\u0443\u0431\u043b\u044f\u0442\u044c\u0441\u044f, \u0441\u0440\u0430\u0437\u0443 \u0432\u044b\u0445\u043e\u0434\u0438\u043c \u0438\u0437 \u043d\u0438\u0445 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 finish. \u041f\u0440\u043e\u0434\u0435\u043b\u044b\u0432\u0430\u0435\u043c \u044d\u0442\u043e 2 \u0440\u0430\u0437\u0430, \u043a\u043e\u0433\u0434\u0430 \u0432\u0441\u0435 \u043a\u043e\u0434\u0438\u0440\u0443\u044e\u0449\u0438\u0435 \u0441\u0435\u0441\u0441\u0438\u0438 \u0437\u0430\u043d\u044f\u0442\u044b \u0438 \u043a\u043e\u0433\u0434\u0430 \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0435.<\/p>\n<p>  \u0421\u043b\u0435\u0434\u0443\u044f \u0442\u0430\u043a\u043e\u0439 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043c \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0440\u0430\u0437\u0432\u0435\u0442\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u043c\u0435\u0441\u0442\u0430:  <\/p>\n<pre>    |0x7fffe289b319                                  callq  0x7fffe288d510                                                                                                         |    |0x7fffe289b31e                                  test   %eax,%eax                                                                                                              |    |0x7fffe289b320                                  mov    %eax,%ebp                                                                                                              |    |0x7fffe289b322                                  jne    0x7fffe289b332                                                                                                         | <\/pre>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u044f, \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0449\u0430\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u0435:  <\/p>\n<pre>   &gt;|0x7fffe288d510  mov    %rbx,-0x20(%rsp)                                                                                                                                       |    |0x7fffe288d515  mov    %rbp,-0x18(%rsp)                                                                                                                                       |    |0x7fffe288d51a  mov    %rdi,%rbx                                                                                                                                              |    |0x7fffe288d51d  mov    %r12,-0x10(%rsp)                                                                                                                                       |    |0x7fffe288d522  mov    %r13,-0x8(%rsp)                                                                                                                                        |    |0x7fffe288d527  sub    $0x28,%rsp                                                                                                                                             |    |0x7fffe288d52b  test   %rsi,%rsi                                                                                                                                              |    |0x7fffe288d52e  mov    %rsi,%r12                                                                                                                                              |    |0x7fffe288d531  mov    %rcx,%r13                                                                                                                                              |    |0x7fffe288d534  mov    $0x6,%ebp                                                                                                                                              |    |0x7fffe288d539  je     0x7fffe288d54d                                                                                                                                         |    |0x7fffe288d53b  dec    %edx                                                                                                                                                   |    |0x7fffe288d53d  mov    $0xa,%bpl                                                                                                                                              |    |0x7fffe288d540  je     0x7fffe288d568                                                                                                                                         |    |0x7fffe288d542  cmpb   $0x1,0x10(%rbx)                                                                                                                                        |    |0x7fffe288d546  je     0x7fffe288d5a3                                                                                                                                         |    |0x7fffe288d548  mov    $0x2,%ebp                                                                                                                                              |    |0x7fffe288d54d  mov    %ebp,%eax                                                                                                                                              |    |0x7fffe288d54f  mov    0x8(%rsp),%rbx                                                                                                                                         |    |0x7fffe288d554  mov    0x10(%rsp),%rbp                                                                                                                                        |    |0x7fffe288d559  mov    0x18(%rsp),%r12                                                                                                                                        |    |0x7fffe288d55e  mov    0x20(%rsp),%r13                                                                                                                                        |    |0x7fffe288d563  add    $0x28,%rsp                                                                                                                                             |    |0x7fffe288d567  retq                                                                                                                                                          | <\/pre>\n<p>  \u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0447\u0442\u043e-\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438, \u0435\u0441\u043b\u0438 \u0443\u0441\u043f\u0435\u0448\u043d\u043e, \u2014 \u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0447\u0442\u043e-\u0442\u043e \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 0, \u0435\u0441\u043b\u0438 \u043d\u0435\u0442, \u2014 \u0442\u043e 10. \u0420\u043e\u0432\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0434 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438\u0437 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0430\u043c\u0430 nvEncOpenEncodeSessionEx() \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435\u0443\u0434\u0430\u0447\u0438. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u0430\u043a \u0435\u0441\u043b\u0438 \u0431\u044b \u043e\u043d\u0430 \u0432\u0435\u0440\u043d\u0443\u043b\u0430 0.<\/p>\n<p>  \u041e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c\u0441\u044f \u043f\u043e\u0441\u043b\u0435 callq 0x7fffe288d510 \u0438 \u043f\u0435\u0440\u0435\u0434 test %eax,%eax. \u041e\u0431\u043d\u0443\u043b\u044f\u0435\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b:  <\/p>\n<pre> (gdb) set $eax = 0 (gdb) continue <\/pre>\n<p>  \u041f\u0435\u0440\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430 \u043d\u0430\u0447\u0430\u043b\u0430\u0441\u044c! \u0418 \u0434\u0430\u0436\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b. \u0417\u043d\u0430\u0447\u0438\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e, \u0447\u0442\u043e\u0431\u044b \u0432 \u043a\u043e\u0434\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u044b\u043b\u043e \u0442\u0430\u043a. \u0417\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u043c \u044d\u0442\u043e \u0432 \u0441\u0430\u043c\u043e\u0439 libnvidia-encode.so.1<\/p>\n<p>  \u041d\u0443\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c \u0433\u0434\u0435 \u044d\u0442\u043e \u043c\u0435\u0441\u0442\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u043d\u0430 \u0434\u0438\u0441\u043a\u0435. \u0423\u0437\u043d\u0430\u0435\u043c \u043a\u0430\u043a\u043e\u043c\u0443 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e \u0432 \u0444\u0430\u0439\u043b\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u0432 \u043a\u043e\u0434\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0439 \u0432 \u043f\u0430\u043c\u044f\u0442\u044c.  <\/p>\n<pre> (gdb) info proc mappings process 1692 Mapped address spaces:            Start Addr           End Addr       Size     Offset objfile ...       0x7fffe2887000     0x7fffe28a8000    0x21000        0x0 \/usr\/lib\/x86_64-linux-gnu\/libnvidia-encode.so.346.46 ... <\/pre>\n<p>  \u041d\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 \u043e\u043a\u0440\u0435\u0441\u0442\u043d\u043e\u0441\u0442\u044c \u0430\u0434\u0440\u0435\u0441\u0430 0x7fffe289b31e, \u043e\u043d\u0430 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u044d\u0442\u043e\u0442 \u0440\u0435\u0433\u0438\u043e\u043d. \u0422\u043e\u0433\u0434\u0430 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0432 \u0444\u0430\u0439\u043b\u0435 \u0440\u0430\u0432\u043d\u043e: \u0430\u0434\u0440\u0435\u0441 \u2014 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 + \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430.  <\/p>\n<pre> (gdb) print\/x 0x7fffe289b31e - 0x7fffe2887000 + 0x0 $7 = 0x1431e <\/pre>\n<h4>Biew<\/h4>\n<p>  \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u043f\u0430\u0442\u0447\u0438\u0442\u044c \u0441\u0430\u043c \u0444\u0430\u0439\u043b. \u042f \u043d\u0435 \u043d\u0430\u0448\u0451\u043b \u043f\u043e\u043a\u0430 \u043d\u0438\u0447\u0435\u0433\u043e \u043b\u0443\u0447\u0448\u0435, \u0447\u0435\u043c <a href=\"http:\/\/sourceforge.net\/p\/beye\/wiki\/Home\/\">biew<\/a> (\u0431\u044b\u043b \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d \u0432 beye). \u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0432 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e, \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043c \u0444\u0430\u0439\u043b:  <\/p>\n<pre> biew \/usr\/lib\/x86_64-linux-gnu\/libnvidia-encode.so.346.46 <\/pre>\n<p>  \u0412 \u043d\u0451\u043c: F2 -&gt; Disassembler, F5 -&gt; 1431e<br \/>  \u041f\u043e\u043b\u0443\u0447\u0438\u043c \u0442\u0430\u043a\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u0443:<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/302\/937\/5d0\/3029375d01b64f2f97f92cfe240fcce2.png\"\/><\/p>\n<p>  \u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u043e\u0447\u044c-\u0432-\u0442\u043e\u0447\u044c \u043a\u0430\u043a \u0438\u0441\u043a\u043e\u043c\u044b\u0439 \u043a\u043e\u0434, \u0437\u043d\u0430\u0447\u0438\u0442 \u043c\u044b \u043f\u043e\u043f\u0430\u043b\u0438 \u0432\u0435\u0440\u043d\u043e. \u041d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e, \u0447\u0442\u043e\u0431\u044b \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 eax \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f 0, \u0430 \u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u0451\u043b \u043d\u0438\u043a\u043e\u0433\u0434\u0430.<\/p>\n<p>  \u041d\u0430\u0436\u0430\u0442\u0438\u0435 F4 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0440\u0435\u0436\u0438\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0412 biew \u043d\u0435\u0442 \u0442\u0430\u043a\u043e\u0433\u043e \u0443\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430 \u043a\u0430\u043a \u0432 hiew, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432\u0432\u043e\u0434\u0438\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e, \u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0435\u0451 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u0443\u0435\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u043f\u043a\u043e\u0434\u0430\u043c\u0438 \u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e. \u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u0442\u0430\u043a:<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/02f\/d09\/f22\/02fd09f2257748d088599f5b544f81bb.png\"\/><\/p>\n<p>  \u0411\u0430\u0439\u0442 \u043f\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e 0x1431e \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f 0x85 \u043c\u0435\u043d\u044f\u0435\u043c \u043d\u0430 0x29. \u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u00abtest eax, eax\u00bb \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u00absub eax, eax\u00bb. \u0414\u0432\u0430 \u0431\u0430\u0439\u0442\u0430 \u043f\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f\u043c 0x14322 \u0438 0x14323 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u043c \u043d\u0430 0x90 \u2014 \u044d\u0442\u043e \u0448\u0438\u0440\u043e\u043a\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u043e\u043f\u043a\u043e\u0434 nop.<\/p>\n<h4>\u0418\u0442\u043e\u0433<\/h4>\n<p>  \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0432\u043f\u043e\u043b\u043d\u0435 \u0445\u043e\u0440\u043e\u0448\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b, \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0441\u0442\u0438\u0447\u044c \u043c\u043d\u043e\u0433\u043e\u0433\u043e \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0433\u043e.     \t<\/p>\n<div class=\"clear\"><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/262563\/\"> http:\/\/habrahabr.ru\/post\/262563\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>     \t\u0412 <a href=\"http:\/\/habrahabr.ru\/post\/262507\/\">\u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438<\/a> \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u043e \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0432\u0438\u0434\u0435\u043e \u0432 Linux \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Nvidia NVENC. \u041a\u0430\u043a \u0443\u0436\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u043e\u0441\u044c \u0440\u0430\u043d\u0435\u0435, Nvidia \u0434\u043b\u044f \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u043d\u044b\u0445 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043e \u0434\u0432\u0443\u0445 \u0441\u0435\u0441\u0441\u0438\u0439 \u043d\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0443. \u0414\u0430\u043d\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 \u0431\u043e\u0440\u044c\u0431\u0435 \u0441 \u044d\u0442\u0438\u043c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435\u043c.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-261460","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/261460","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=261460"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/261460\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=261460"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=261460"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=261460"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}