{"action":"opened","issue":{"url":"https://api.github.com/repos/google/ExoPlayer/issues/720","labels_url":"https://api.github.com/repos/google/ExoPlayer/issues/720/labels{/name}","comments_url":"https://api.github.com/repos/google/ExoPlayer/issues/720/comments","events_url":"https://api.github.com/repos/google/ExoPlayer/issues/720/events","html_url":"https://github.com/google/ExoPlayer/issues/720","id":101671731,"number":720,"title":"Access to low level components","user":{"login":"ZeeD","id":69095,"avatar_url":"https://avatars.githubusercontent.com/u/69095?v=3","gravatar_id":"","url":"https://api.github.com/users/ZeeD","html_url":"https://github.com/ZeeD","followers_url":"https://api.github.com/users/ZeeD/followers","following_url":"https://api.github.com/users/ZeeD/following{/other_user}","gists_url":"https://api.github.com/users/ZeeD/gists{/gist_id}","starred_url":"https://api.github.com/users/ZeeD/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ZeeD/subscriptions","organizations_url":"https://api.github.com/users/ZeeD/orgs","repos_url":"https://api.github.com/users/ZeeD/repos","events_url":"https://api.github.com/users/ZeeD/events{/privacy}","received_events_url":"https://api.github.com/users/ZeeD/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2015-08-18T14:36:56Z","updated_at":"2015-08-18T14:36:56Z","closed_at":null,"body":"Hi.\r\nI am the developer of an HLS-based streaming app. ATM I'm simply using a VideoView.\r\n\r\nI was tasked to add support for an unsupported media format.\r\nSpecifically, the HLS chunks contains an H.264-compatible encoded video, in witch additional data \"is added in Supplemental Enhanceement Information (SEI) of the H.264 Network Abstraction Layer (NAL).\"\r\n\r\nNow, I was said I need to drop the \"high level\" approach of the VideoView, and switch to the low level \"MediaCodec\" API.\r\n\r\nAFAIK (after a day of trying) the MediaExtractor / MediaCodec / etc ... classes can't directly read an .m3u8 file, follow the playlist, find the correct level and download the chunks (.ts), and, frankly, I'm not sure it's the \"fastest\" approach to obtain the result.\r\n\r\nI was suggested to use ExoPlayer as an \"intermediate level\" approach: I am successfully able to use the player to stream a \"normal\" HLS video. But I'm having troubles trying to get access to the underling low-level APIs.\r\n\r\nSearching throug the code I found some interesting classes (for example com.google.android.exoplayer.extractor.ts.TsExtractor.PesReader) but I am missing how the low level pieces are created and interconnected by the ExoPlayer (to make stupid questions: what compent instantiate that class? How can I use from the outside?).\r\n\r\nIs there some specific pointer to access this point?\r\n\r\nAnother thing: I *also* need to access the decoded H.264 video frame, in a form equivalent to\r\n\r\n    struct {\r\n        uint8_t* plane[3]; /**< plane pointers */\r\n        size_t stride[3]; /**< line strides */\r\n    };\r\n\r\n?\r\n\r\n(just to explain: this custom decoder needs the additional data and the \"base\" frame that should be drawn, and compose them creating a \"new\" frame, that I should really send to the SurfaceView I am now using.)"}}