ExoPlayer: master/media playlist parsing

2021. 11. 16. 08:20Multimedia

    목차
반응형

 

 

1. playlist 생성

 

1) ExoPlayerImplInternal.prepare -> MediaSourceList.prepare

    HLS prepare 시,
        1. master playlist parsing
            HlsMasterPlaylist
        2. media playlist parsing
            이후 ts file들의 위치 정보들을 지니게 될 것임

 

    MediaSourceHolder

        timeline 유지
        각 holder들은 연속적인 timeline에 대응
        Media source를 MaskingMediaSource로 관리
        active period 관리

 

    playlist parsing

        HlsDataSourceFactory(interface임)가 생 성한 DataSource를 parsingLoadable에 주입

        DefaultHlsDataSourceFactory


    HlsMediaSource는 createMediaSource에서 다음을 가지고 생성됨
        mediaItem + hlsDataSourceFactory + extractorFactory
            + drmSessionManager + playlistTrackerFactory가 createTracker로 생성한 factory

 

    prepare 시, 
        playlistTracker를 start 함 (event dispatcher를 연결)

            master play list를 parsing 하고 live stream인지 여부를 파악

 

    hls media source의 timeline

        primary playlist가 갱신 되면, 

            onLoadCompleted ->
            processLoadedPlaylist -> onPlaylistUpdated -> 

 

            onPrimaryPlaylistRefreshed -> 
            createTimelineForLive에서 
                1. SinglePeriodTimeline를 생성
                2. refreshSourceInfo에 넣음

 

            media source caller들에게 onSourceInfoRefreshed(this, timeline)으로 알림

            MediaSourceCaller caller는 preparesource에서 등록

 

    mediasourcelist의 prepareChildSource에서
        caller를 생성
        w/ mediaSourceListInfoListener.onPlaylistUpdateRequested() 를 호출하는
            lambda function

media source caller
    위처럼 media source 별로 등록되는 media source caller는
    HlsMediaSource.onPrimaryPlaylistRefresh가 호출되면, 호출됨

 

 

2. do some work

1) do some work event 발생

2) do some work

    playing period holder가 준비되면, 

    playing period holder의 media period 내 buffer를 버리고, renderer들에 대해 rendering 수행

 

player는

    window와 period, media clock을 유지함
    playback thread를 사용해 looper로 사용하여 event 처리

 

 

반응형

'Multimedia' 카테고리의 다른 글

영상 품질 측정 기법  (0) 2022.04.16
ExoPlayer 지원 codec 및 A/V rendering  (0) 2022.01.05
ExoPlayer build & streaming media source 생성  (0) 2021.11.14
ExoPlayer 동작 분석 (prepare)  (0) 2021.11.14
GStreamer pwg: ch. 19 QoS  (0) 2021.10.11