{"action":"created","comment":{"url":"https://api.github.com/repos/01org/player-ffmpeg-yami/pulls/comments/40179101","id":40179101,"diff_hunk":"@@ -0,0 +1,443 @@\n+From 6337cfdb08328afb76f522c4f915b3e21a9a4607 Mon Sep 17 00:00:00 2001\n+From: jkyu <jiankang.yu@intel.com>\n+Date: Tue, 22 Sep 2015 00:35:27 -0400\n+Subject: [PATCH] avcodec/h264: enable libyami h264 decoder\n+\n+---\n+ configure              |  17 ++-\n+ libavcodec/Makefile    |   2 +\n+ libavcodec/allcodecs.c |   3 +\n+ libavcodec/libyami.cpp | 321 +++++++++++++++++++++++++++++++++++++++++++++++++\n+ 4 files changed, 338 insertions(+), 5 deletions(-)\n+ mode change 100644 => 100755 libavcodec/Makefile\n+ mode change 100644 => 100755 libavcodec/allcodecs.c\n+ create mode 100755 libavcodec/libyami.cpp\n+\n+diff --git a/configure b/configure\n+index 806e2e9..4f684c9 100755\n+--- a/configure\n++++ b/configure\n+@@ -243,6 +243,7 @@ External library support:\n+   --enable-libspeex        enable Speex de/encoding via libspeex [no]\n+   --enable-libssh          enable SFTP protocol via libssh [no]\n+   --enable-libstagefright-h264  enable H.264 decoding via libstagefright [no]\n++  --enable-libyami         enable H.264 decoding via libyami [no]\n+   --enable-libtheora       enable Theora encoding via libtheora [no]\n+   --enable-libtwolame      enable MP2 encoding via libtwolame [no]\n+   --enable-libutvideo      enable Ut Video encoding and decoding via libutvideo [no]\n+@@ -1051,7 +1052,8 @@ check_func_headers(){\n+             echo \"long check_$func(void) { return (long) $func; }\"\n+         done\n+         echo \"int main(void) { return 0; }\"\n+-    } | check_ld \"cc\" \"$@\" && enable $funcs && enable_safe $headers\n++    ## both C++/C header check goes here, use 'cxx'\n++    } | check_ld \"cxx\" \"$@\" && enable $funcs && enable_safe $headers\n+ }\n+\n+ check_class_headers_cpp(){\n+@@ -1112,14 +1114,15 @@ check_lib_cpp(){\n+\n+ check_pkg_config(){\n+     log check_pkg_config \"$@\"\n+-    pkgandversion=\"$1\"\n++    ## one component may depend on multiple pkgs\n++    allpkgs=\"$1\"\n+     pkg=\"${1%% *}\"\n+     headers=\"$2\"\n+     funcs=\"$3\"\n+     shift 3\n+-    check_cmd $pkg_config --exists --print-errors $pkgandversion || return\n+-    pkg_cflags=$($pkg_config --cflags $pkg_config_flags $pkg)\n+-    pkg_libs=$($pkg_config --libs $pkg_config_flags $pkg)\n++    check_cmd $pkg_config --exists --print-errors $allpkgs || return\n++    pkg_cflags=$($pkg_config --cflags $pkg_config_flags $allpkgs)\n++    pkg_libs=$($pkg_config --libs $pkg_config_flags $allpkgs)\n+     check_func_headers \"$headers\" \"$funcs\" $pkg_cflags $pkg_libs \"$@\" &&\n+         set_safe \"${pkg}_cflags\" $pkg_cflags   &&\n+         set_safe \"${pkg}_libs\"   $pkg_libs\n+@@ -1400,6 +1403,7 @@ EXTERNAL_LIBRARY_LIST=\"\n+     libspeex\n+     libssh\n+     libstagefright_h264\n++    libyami\n+     libtheora\n+     libtwolame\n+     libutvideo\n+@@ -2460,6 +2464,8 @@ libspeex_decoder_deps=\"libspeex\"\n+ libspeex_encoder_deps=\"libspeex\"\n+ libspeex_encoder_select=\"audio_frame_queue\"\n+ libstagefright_h264_decoder_deps=\"libstagefright_h264\"\n++libyami_h264_decoder_deps=\"libyami\"\n++libyami_hevc_decoder_deps=\"libyami\"\n+ libtheora_encoder_deps=\"libtheora\"\n+ libtwolame_encoder_deps=\"libtwolame\"\n+ libvo_aacenc_encoder_deps=\"libvo_aacenc\"\n+@@ -5131,6 +5137,7 @@ enabled libspeex          && require_pkg_config speex speex/speex.h speex_decode\n+ enabled libstagefright_h264 && require_cpp libstagefright_h264 \"binder/ProcessState.h media/stagefright/MetaData.h\n+     media/stagefright/MediaBufferGroup.h media/stagefright/MediaDebug.h media/stagefright/MediaDefs.h\n+     media/stagefright/OMXClient.h media/stagefright/OMXCodec.h\" android::OMXClient -lstagefright -lmedia -lutils -lbinder -lgnustl_static\n++enabled libyami           && require_pkg_config \"libyami_decoder libva libyami_vpp libva-drm\" VideoDecoderHost.h createVideoDecoder && add_extralibs \"-lstdc++ -Wl,--no-as-needed -ldl\"\n+ enabled libtheora         && require libtheora theora/theoraenc.h th_info_init -ltheoraenc -ltheoradec -logg\n+ enabled libtwolame        && require libtwolame twolame.h twolame_init -ltwolame &&\n+                              { check_lib twolame.h twolame_encode_buffer_float32_interleaved -ltwolame ||\n+diff --git a/libavcodec/Makefile b/libavcodec/Makefile\n+old mode 100644\n+new mode 100755\n+index bfd6425..9105e8f\n+--- a/libavcodec/Makefile\n++++ b/libavcodec/Makefile\n+@@ -776,6 +776,8 @@ OBJS-$(CONFIG_LIBSHINE_ENCODER)           += libshine.o\n+ OBJS-$(CONFIG_LIBSPEEX_DECODER)           += libspeexdec.o\n+ OBJS-$(CONFIG_LIBSPEEX_ENCODER)           += libspeexenc.o\n+ OBJS-$(CONFIG_LIBSTAGEFRIGHT_H264_DECODER)+= libstagefright.o\n++OBJS-$(CONFIG_LIBYAMI_H264_DECODER)       += libyami.o\n++OBJS-$(CONFIG_LIBYAMI_HEVC_DECODER)       += libyami.o\n+ OBJS-$(CONFIG_LIBTHEORA_ENCODER)          += libtheoraenc.o\n+ OBJS-$(CONFIG_LIBTWOLAME_ENCODER)         += libtwolame.o\n+ OBJS-$(CONFIG_LIBUTVIDEO_DECODER)         += libutvideodec.o\n+diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c\n+old mode 100644\n+new mode 100755\n+index ce97746..2f79c47\n+--- a/libavcodec/allcodecs.c\n++++ b/libavcodec/allcodecs.c\n+@@ -105,6 +105,9 @@ void avcodec_register_all(void)\n+     REGISTER_HWACCEL(WMV3_VDPAU,        wmv3_vdpau);\n+\n+     /* video codecs */\n++    REGISTER_DECODER(LIBYAMI_H264,      libyami_h264);\n++    REGISTER_DECODER(LIBYAMI_HEVC,      libyami_hevc);\n++\n+     REGISTER_ENCODER(A64MULTI,          a64multi);\n+     REGISTER_ENCODER(A64MULTI5,         a64multi5);\n+     REGISTER_DECODER(AASC,              aasc);\n+diff --git a/libavcodec/libyami.cpp b/libavcodec/libyami.cpp\n+new file mode 100755\n+index 0000000..c71d416\n+--- /dev/null\n++++ b/libavcodec/libyami.cpp\n+@@ -0,0 +1,321 @@\n++/*\n++ * libyami.cpp -- decoder uses libyami\n++ *\n++ *  Copyright (C) 2014 Intel Corporation\n++ *    Author: Yu Jiankang<jiankang.yu@intel.com>\n++ *\n++ * This file is part of FFmpeg.\n++ *\n++ * FFmpeg is free software; you can redistribute it and/or\n++ * modify it under the terms of the GNU Lesser General Public\n++ * License as published by the Free Software Foundation; either\n++ * version 2.1 of the License, or (at your option) any later version.\n++ *\n++ * FFmpeg is distributed in the hope that it will be useful,\n++ * but WITHOUT ANY WARRANTY; without even the implied warranty of\n++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n++ * Lesser General Public License for more details.\n++ *\n++ * You should have received a copy of the GNU Lesser General Public\n++ * License along with FFmpeg; if not, write to the Free Software\n++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n++ */\n++#include <pthread.h>\n++#include <unistd.h>\n++#include <assert.h>\n++#include <deque>\n++extern \"C\" {\n++#include \"avcodec.h\"\n++#include \"libavutil/imgutils.h\"\n++#include \"internal.h\"\n++#include \"libavcodec/vaapi.h\"\n++}\n++#include \"VideoDecoderHost.h\"\n++#include \"VideoPostProcessHost.h\"\n++\n++\n++using namespace YamiMediaCodec;\n++\n++struct YamiContext {\n++    AVCodecContext *avctx;\n++    IVideoDecoder *decoder;\n++    const VideoFormatInfo *format_info;\n++    bool vpp_init;\n++    SharedPtr<NativeDisplay> nativeDisplay;\n++    SharedPtr<IVideoPostProcess> vpp;\n++\n++    // debug use\n++    int decode_count;\n++    int decode_count_yami;\n++    int render_count;\n++};\n++\n++struct MimeEntry\n++{\n++    AVCodecID id;\n++    const char* mime;\n++};\n++\n++#ifndef N_ELEMENTS\n++#define N_ELEMENTS(array) (sizeof(array)/sizeof(array[0]))\n++#endif\n++\n++static const MimeEntry MimeEntrys[] = {\n++    AV_CODEC_ID_VP8, YAMI_MIME_VP8,\n++\n++#if LIBAVCODEC_VERSION_INT > AV_VERSION_INT(54, 40, 0)\n++    AV_CODEC_ID_VP9, YAMI_MIME_VP9,\n++#endif\n++\n++    AV_CODEC_ID_H264, YAMI_MIME_H264,\n++    AV_CODEC_ID_H265, YAMI_MIME_H265\n++};\n++\n++const char * getMimeType(AVCodecID codec_id)\n++{\n++    for (int i = 0; i < N_ELEMENTS(MimeEntrys); i++) {\n++        if (MimeEntrys[i].id == codec_id) {\n++            return MimeEntrys[i].mime;\n++        }\n++    }\n++    return \"unknow\";\n++}\n++\n++ bool initDisplay(AVCodecContext *avctx)\n++{\n++    YamiContext *s = (YamiContext*)avctx->priv_data;\n++    struct vaapi_context *vactx = (struct vaapi_context *)(avctx->hwaccel_context);\n++    s->nativeDisplay.reset(new NativeDisplay);\n++    s->nativeDisplay->type = NATIVE_DISPLAY_VA;\n++    s->nativeDisplay->handle = (intptr_t)(vactx->display);\n++\n++    return true;\n++}\n++\n++static av_cold int yami_init(AVCodecContext *avctx)\n++{\n++    YamiContext *s = (YamiContext*)avctx->priv_data;\n++    Decode_Status status;\n++    VideoConfigBuffer config_buffer;\n++    NativeDisplay native_display;\n++    enum AVPixelFormat choices = AV_PIX_FMT_VAAPI_VLD;\n++    struct vaapi_context *vactx = (struct vaapi_context *)(avctx->hwaccel_context);\n++    s->decoder = createVideoDecoder(getMimeType(avctx->codec_id));\n++    if (!s->decoder) {\n++        av_log(avctx, AV_LOG_ERROR, \"fail to create libyami h264 decoder\\n\");\n++        return -1;\n++    }\n++\n++    if((avctx->get_buffer2 != avcodec_default_get_buffer2) &&(avctx->get_buffer2 != NULL)) {\n++        native_display.type = NATIVE_DISPLAY_VA;\n++        native_display.handle = (intptr_t)(vactx->display);\n++        s->decoder ->setNativeDisplay(&native_display);\n++    }\n++\n++    memset(&config_buffer,0,sizeof(VideoConfigBuffer));\n++    if (avctx->extradata && avctx->extradata_size && avctx->extradata[0] == 1) {\n++        config_buffer.data = avctx->extradata;\n++        config_buffer.size = avctx->extradata_size;\n++    }\n++    config_buffer.profile = VAProfileNone;\n++    status = s->decoder->start(&config_buffer);\n++    if (status != DECODE_SUCCESS) {\n++        av_log(avctx, AV_LOG_ERROR, \"yami h264 decoder fail to start\\n\");\n++        return -1;\n++    }\n++\n++    s->decode_count = 0;\n++    s->decode_count_yami = 0;\n++    s->render_count = 0;\n++\n++    avctx->get_format(avctx, &choices);\n++\n++    return 0;\n++}\n++\n++static void* decodeBuffer(void *arg, VideoDecodeBuffer *in_buffer)\n++{\n++    AVCodecContext *avctx = (AVCodecContext*)arg;\n++    YamiContext *s = (YamiContext*)avctx->priv_data;\n++    Decode_Status status;\n++\n++    // decode one input buffer\n++    if (in_buffer->data) {\n++        status = s->decoder->decode(in_buffer);\n++    }\n++\n++    if (DECODE_FORMAT_CHANGE == status) {\n++        s->format_info = s->decoder->getFormatInfo();\n++        // resend the buffer\n++        status = s->decoder->decode(in_buffer);\n++        avctx->width = s->format_info->width;\n++        avctx->height = s->format_info->height;\n++        avctx->pix_fmt = AV_PIX_FMT_YUV420P;\n++    }\n++\n++    if (in_buffer->data)\n++        s->decode_count_yami++;\n++    av_free(in_buffer);\n++\n++    return NULL;\n++}\n++\n++static int yami_decode_frame(AVCodecContext *avctx, void *data /* output frame */,\n++                                    int *got_frame, AVPacket *avpkt /* input compressed data*/)\n++{\n++    YamiStatus ret;\n++    AVFrame get_frame;\n++    YamiContext *s = (YamiContext*)avctx->priv_data;\n++    const VideoRenderBuffer* out_frame;\n++    VideoDecodeBuffer *in_buffer = NULL;\n++\n++    if ((!s->vpp_init) &&(avctx->get_buffer2 != avcodec_default_get_buffer2) &&(avctx->get_buffer2 != NULL)) {\n++        initDisplay(avctx);\n++        s->vpp.reset(createVideoPostProcess(YAMI_VPP_SCALER), releaseVideoPostProcess);\n++        if (!(s->vpp)) {\n++            return -1;\n++        }\n++        if (s->vpp->setNativeDisplay(*(s->nativeDisplay)) != YAMI_SUCCESS) {\n++            return -1;\n++        }\n++        s->vpp_init = true;\n++    }\n++\n++    // append avpkt to input buffer queue\n++    in_buffer = (VideoDecodeBuffer*)av_mallocz(sizeof(VideoDecodeBuffer));","path":"mpv/0002-avcodec-h264-enable-libyami-h264-decoder.patch","position":304,"original_position":304,"commit_id":"6f7dbc00cdca258d6c290de11b01e092ffe09404","original_commit_id":"6f7dbc00cdca258d6c290de11b01e092ffe09404","user":{"login":"xuguangxin","id":6667546,"avatar_url":"https://avatars.githubusercontent.com/u/6667546?v=3","gravatar_id":"","url":"https://api.github.com/users/xuguangxin","html_url":"https://github.com/xuguangxin","followers_url":"https://api.github.com/users/xuguangxin/followers","following_url":"https://api.github.com/users/xuguangxin/following{/other_user}","gists_url":"https://api.github.com/users/xuguangxin/gists{/gist_id}","starred_url":"https://api.github.com/users/xuguangxin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xuguangxin/subscriptions","organizations_url":"https://api.github.com/users/xuguangxin/orgs","repos_url":"https://api.github.com/users/xuguangxin/repos","events_url":"https://api.github.com/users/xuguangxin/events{/privacy}","received_events_url":"https://api.github.com/users/xuguangxin/received_events","type":"User","site_admin":false},"body":"use a VideoDecodeBuffer in_buffer maybe better. it do not need malloc and free","created_at":"2015-09-23T08:13:01Z","updated_at":"2015-09-23T08:13:01Z","html_url":"https://github.com/01org/player-ffmpeg-yami/pull/2#discussion_r40179101","pull_request_url":"https://api.github.com/repos/01org/player-ffmpeg-yami/pulls/2","_links":{"self":{"href":"https://api.github.com/repos/01org/player-ffmpeg-yami/pulls/comments/40179101"},"html":{"href":"https://github.com/01org/player-ffmpeg-yami/pull/2#discussion_r40179101"},"pull_request":{"href":"https://api.github.com/repos/01org/player-ffmpeg-yami/pulls/2"}}},"pull_request":{"url":"https://api.github.com/repos/01org/player-ffmpeg-yami/pulls/2","id":45634781,"html_url":"https://github.com/01org/player-ffmpeg-yami/pull/2","diff_url":"https://github.com/01org/player-ffmpeg-yami/pull/2.diff","patch_url":"https://github.com/01org/player-ffmpeg-yami/pull/2.patch","issue_url":"https://api.github.com/repos/01org/player-ffmpeg-yami/issues/2","number":2,"state":"open","locked":false,"title":"add the patch to enable yami for mpv player","user":{"login":"YuJiankang","id":10542940,"avatar_url":"https://avatars.githubusercontent.com/u/10542940?v=3","gravatar_id":"","url":"https://api.github.com/users/YuJiankang","html_url":"https://github.com/YuJiankang","followers_url":"https://api.github.com/users/YuJiankang/followers","following_url":"https://api.github.com/users/YuJiankang/following{/other_user}","gists_url":"https://api.github.com/users/YuJiankang/gists{/gist_id}","starred_url":"https://api.github.com/users/YuJiankang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/YuJiankang/subscriptions","organizations_url":"https://api.github.com/users/YuJiankang/orgs","repos_url":"https://api.github.com/users/YuJiankang/repos","events_url":"https://api.github.com/users/YuJiankang/events{/privacy}","received_events_url":"https://api.github.com/users/YuJiankang/received_events","type":"User","site_admin":false},"body":"This patch is used to integrate libyami to mpv player","created_at":"2015-09-22T07:49:03Z","updated_at":"2015-09-23T08:13:01Z","closed_at":null,"merged_at":null,"merge_commit_sha":"342b0bfad8943d70ede8b9bc7799473df75256d4","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/01org/player-ffmpeg-yami/pulls/2/commits","review_comments_url":"https://api.github.com/repos/01org/player-ffmpeg-yami/pulls/2/comments","review_comment_url":"https://api.github.com/repos/01org/player-ffmpeg-yami/pulls/comments{/number}","comments_url":"https://api.github.com/repos/01org/player-ffmpeg-yami/issues/2/comments","statuses_url":"https://api.github.com/repos/01org/player-ffmpeg-yami/statuses/6f7dbc00cdca258d6c290de11b01e092ffe09404","head":{"label":"YuJiankang:master","ref":"master","sha":"6f7dbc00cdca258d6c290de11b01e092ffe09404","user":{"login":"YuJiankang","id":10542940,"avatar_url":"https://avatars.githubusercontent.com/u/10542940?v=3","gravatar_id":"","url":"https://api.github.com/users/YuJiankang","html_url":"https://github.com/YuJiankang","followers_url":"https://api.github.com/users/YuJiankang/followers","following_url":"https://api.github.com/users/YuJiankang/following{/other_user}","gists_url":"https://api.github.com/users/YuJiankang/gists{/gist_id}","starred_url":"https://api.github.com/users/YuJiankang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/YuJiankang/subscriptions","organizations_url":"https://api.github.com/users/YuJiankang/orgs","repos_url":"https://api.github.com/users/YuJiankang/repos","events_url":"https://api.github.com/users/YuJiankang/events{/privacy}","received_events_url":"https://api.github.com/users/YuJiankang/received_events","type":"User","site_admin":false},"repo":{"id":42906478,"name":"player-ffmpeg-yami","full_name":"YuJiankang/player-ffmpeg-yami","owner":{"login":"YuJiankang","id":10542940,"avatar_url":"https://avatars.githubusercontent.com/u/10542940?v=3","gravatar_id":"","url":"https://api.github.com/users/YuJiankang","html_url":"https://github.com/YuJiankang","followers_url":"https://api.github.com/users/YuJiankang/followers","following_url":"https://api.github.com/users/YuJiankang/following{/other_user}","gists_url":"https://api.github.com/users/YuJiankang/gists{/gist_id}","starred_url":"https://api.github.com/users/YuJiankang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/YuJiankang/subscriptions","organizations_url":"https://api.github.com/users/YuJiankang/orgs","repos_url":"https://api.github.com/users/YuJiankang/repos","events_url":"https://api.github.com/users/YuJiankang/events{/privacy}","received_events_url":"https://api.github.com/users/YuJiankang/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/YuJiankang/player-ffmpeg-yami","description":"example player basing on ffmpeg, with yami used in ffmpeg for decoding/encoding","fork":true,"url":"https://api.github.com/repos/YuJiankang/player-ffmpeg-yami","forks_url":"https://api.github.com/repos/YuJiankang/player-ffmpeg-yami/forks","keys_url":"https://api.github.com/repos/YuJiankang/player-ffmpeg-yami/keys{/key_id}","collaborators_url":"https://api.github.com/repos/YuJiankang/player-ffmpeg-yami/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/YuJiankang/player-ffmpeg-yami/teams","hooks_url":"https://api.github.com/repos/YuJiankang/player-ffmpeg-yami/hooks","issue_events_url":"https://api.github.com/repos/YuJiankang/player-ffmpeg-yami/issues/events{/number}","events_url":"https://api.github.com/repos/YuJiankang/player-ffmpeg-yami/events","assignees_url":"https://api.github.com/repos/YuJiankang/player-ffmpeg-yami/assignees{/user}","branches_url":"https://api.github.com/repos/YuJiankang/player-ffmpeg-yami/branches{/branch}","tags_url":"https://api.github.com/repos/YuJiankang/player-ffmpeg-yami/tags","blobs_url":"https://api.github.com/repos/YuJiankang/player-ffmpeg-yami/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/YuJiankang/player-ffmpeg-yami/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/YuJiankang/player-ffmpeg-yami/git/refs{/sha}","trees_url":"https://api.github.com/repos/YuJiankang/player-ffmpeg-yami/git/trees{/sha}","statuses_url":"https://api.github.com/repos/YuJiankang/player-ffmpeg-yami/statuses/{sha}","languages_url":"https://api.github.com/repos/YuJiankang/player-ffmpeg-yami/languages","stargazers_url":"https://api.github.com/repos/YuJiankang/player-ffmpeg-yami/stargazers","contributors_url":"https://api.github.com/repos/YuJiankang/player-ffmpeg-yami/contributors","subscribers_url":"https://api.github.com/repos/YuJiankang/player-ffmpeg-yami/subscribers","subscription_url":"https://api.github.com/repos/YuJiankang/player-ffmpeg-yami/subscription","commits_url":"https://api.github.com/repos/YuJiankang/player-ffmpeg-yami/commits{/sha}","git_commits_url":"https://api.github.com/repos/YuJiankang/player-ffmpeg-yami/git/commits{/sha}","comments_url":"https://api.github.com/repos/YuJiankang/player-ffmpeg-yami/comments{/number}","issue_comment_url":"https://api.github.com/repos/YuJiankang/player-ffmpeg-yami/issues/comments{/number}","contents_url":"https://api.github.com/repos/YuJiankang/player-ffmpeg-yami/contents/{+path}","compare_url":"https://api.github.com/repos/YuJiankang/player-ffmpeg-yami/compare/{base}...{head}","merges_url":"https://api.github.com/repos/YuJiankang/player-ffmpeg-yami/merges","archive_url":"https://api.github.com/repos/YuJiankang/player-ffmpeg-yami/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/YuJiankang/player-ffmpeg-yami/downloads","issues_url":"https://api.github.com/repos/YuJiankang/player-ffmpeg-yami/issues{/number}","pulls_url":"https://api.github.com/repos/YuJiankang/player-ffmpeg-yami/pulls{/number}","milestones_url":"https://api.github.com/repos/YuJiankang/player-ffmpeg-yami/milestones{/number}","notifications_url":"https://api.github.com/repos/YuJiankang/player-ffmpeg-yami/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/YuJiankang/player-ffmpeg-yami/labels{/name}","releases_url":"https://api.github.com/repos/YuJiankang/player-ffmpeg-yami/releases{/id}","created_at":"2015-09-22T02:31:56Z","updated_at":"2015-09-22T02:31:57Z","pushed_at":"2015-09-22T07:46:59Z","git_url":"git://github.com/YuJiankang/player-ffmpeg-yami.git","ssh_url":"git@github.com:YuJiankang/player-ffmpeg-yami.git","clone_url":"https://github.com/YuJiankang/player-ffmpeg-yami.git","svn_url":"https://github.com/YuJiankang/player-ffmpeg-yami","homepage":null,"size":109,"stargazers_count":0,"watchers_count":0,"language":"C","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"01org:master","ref":"master","sha":"1aceb430af77fcc4104d774239c085de745f4116","user":{"login":"01org","id":1635439,"avatar_url":"https://avatars.githubusercontent.com/u/1635439?v=3","gravatar_id":"","url":"https://api.github.com/users/01org","html_url":"https://github.com/01org","followers_url":"https://api.github.com/users/01org/followers","following_url":"https://api.github.com/users/01org/following{/other_user}","gists_url":"https://api.github.com/users/01org/gists{/gist_id}","starred_url":"https://api.github.com/users/01org/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/01org/subscriptions","organizations_url":"https://api.github.com/users/01org/orgs","repos_url":"https://api.github.com/users/01org/repos","events_url":"https://api.github.com/users/01org/events{/privacy}","received_events_url":"https://api.github.com/users/01org/received_events","type":"Organization","site_admin":false},"repo":{"id":28902611,"name":"player-ffmpeg-yami","full_name":"01org/player-ffmpeg-yami","owner":{"login":"01org","id":1635439,"avatar_url":"https://avatars.githubusercontent.com/u/1635439?v=3","gravatar_id":"","url":"https://api.github.com/users/01org","html_url":"https://github.com/01org","followers_url":"https://api.github.com/users/01org/followers","following_url":"https://api.github.com/users/01org/following{/other_user}","gists_url":"https://api.github.com/users/01org/gists{/gist_id}","starred_url":"https://api.github.com/users/01org/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/01org/subscriptions","organizations_url":"https://api.github.com/users/01org/orgs","repos_url":"https://api.github.com/users/01org/repos","events_url":"https://api.github.com/users/01org/events{/privacy}","received_events_url":"https://api.github.com/users/01org/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/01org/player-ffmpeg-yami","description":"example player basing on ffmpeg, with yami used in ffmpeg for decoding/encoding","fork":false,"url":"https://api.github.com/repos/01org/player-ffmpeg-yami","forks_url":"https://api.github.com/repos/01org/player-ffmpeg-yami/forks","keys_url":"https://api.github.com/repos/01org/player-ffmpeg-yami/keys{/key_id}","collaborators_url":"https://api.github.com/repos/01org/player-ffmpeg-yami/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/01org/player-ffmpeg-yami/teams","hooks_url":"https://api.github.com/repos/01org/player-ffmpeg-yami/hooks","issue_events_url":"https://api.github.com/repos/01org/player-ffmpeg-yami/issues/events{/number}","events_url":"https://api.github.com/repos/01org/player-ffmpeg-yami/events","assignees_url":"https://api.github.com/repos/01org/player-ffmpeg-yami/assignees{/user}","branches_url":"https://api.github.com/repos/01org/player-ffmpeg-yami/branches{/branch}","tags_url":"https://api.github.com/repos/01org/player-ffmpeg-yami/tags","blobs_url":"https://api.github.com/repos/01org/player-ffmpeg-yami/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/01org/player-ffmpeg-yami/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/01org/player-ffmpeg-yami/git/refs{/sha}","trees_url":"https://api.github.com/repos/01org/player-ffmpeg-yami/git/trees{/sha}","statuses_url":"https://api.github.com/repos/01org/player-ffmpeg-yami/statuses/{sha}","languages_url":"https://api.github.com/repos/01org/player-ffmpeg-yami/languages","stargazers_url":"https://api.github.com/repos/01org/player-ffmpeg-yami/stargazers","contributors_url":"https://api.github.com/repos/01org/player-ffmpeg-yami/contributors","subscribers_url":"https://api.github.com/repos/01org/player-ffmpeg-yami/subscribers","subscription_url":"https://api.github.com/repos/01org/player-ffmpeg-yami/subscription","commits_url":"https://api.github.com/repos/01org/player-ffmpeg-yami/commits{/sha}","git_commits_url":"https://api.github.com/repos/01org/player-ffmpeg-yami/git/commits{/sha}","comments_url":"https://api.github.com/repos/01org/player-ffmpeg-yami/comments{/number}","issue_comment_url":"https://api.github.com/repos/01org/player-ffmpeg-yami/issues/comments{/number}","contents_url":"https://api.github.com/repos/01org/player-ffmpeg-yami/contents/{+path}","compare_url":"https://api.github.com/repos/01org/player-ffmpeg-yami/compare/{base}...{head}","merges_url":"https://api.github.com/repos/01org/player-ffmpeg-yami/merges","archive_url":"https://api.github.com/repos/01org/player-ffmpeg-yami/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/01org/player-ffmpeg-yami/downloads","issues_url":"https://api.github.com/repos/01org/player-ffmpeg-yami/issues{/number}","pulls_url":"https://api.github.com/repos/01org/player-ffmpeg-yami/pulls{/number}","milestones_url":"https://api.github.com/repos/01org/player-ffmpeg-yami/milestones{/number}","notifications_url":"https://api.github.com/repos/01org/player-ffmpeg-yami/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/01org/player-ffmpeg-yami/labels{/name}","releases_url":"https://api.github.com/repos/01org/player-ffmpeg-yami/releases{/id}","created_at":"2015-01-07T06:56:47Z","updated_at":"2015-08-04T18:00:22Z","pushed_at":"2015-09-22T07:49:04Z","git_url":"git://github.com/01org/player-ffmpeg-yami.git","ssh_url":"git@github.com:01org/player-ffmpeg-yami.git","clone_url":"https://github.com/01org/player-ffmpeg-yami.git","svn_url":"https://github.com/01org/player-ffmpeg-yami","homepage":null,"size":168,"stargazers_count":3,"watchers_count":3,"language":"C","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":4,"mirror_url":null,"open_issues_count":2,"forks":4,"open_issues":2,"watchers":3,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/01org/player-ffmpeg-yami/pulls/2"},"html":{"href":"https://github.com/01org/player-ffmpeg-yami/pull/2"},"issue":{"href":"https://api.github.com/repos/01org/player-ffmpeg-yami/issues/2"},"comments":{"href":"https://api.github.com/repos/01org/player-ffmpeg-yami/issues/2/comments"},"review_comments":{"href":"https://api.github.com/repos/01org/player-ffmpeg-yami/pulls/2/comments"},"review_comment":{"href":"https://api.github.com/repos/01org/player-ffmpeg-yami/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/01org/player-ffmpeg-yami/pulls/2/commits"},"statuses":{"href":"https://api.github.com/repos/01org/player-ffmpeg-yami/statuses/6f7dbc00cdca258d6c290de11b01e092ffe09404"}}}}