Skip to content

Commit

Permalink
Merge branch 'bilibili:master' into bme/fork/rotate
Browse files Browse the repository at this point in the history
  • Loading branch information
brennanerbz committed Jul 21, 2022
2 parents 0397fd5 + 30eb944 commit cecd2b4
Show file tree
Hide file tree
Showing 32 changed files with 5,370 additions and 53 deletions.
1 change: 1 addition & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
tag next
--------------------------------
- ffmpeg: upgrade to 4.0

tag k0.8.8
--------------------------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,68 @@ public void onItemClick(AdapterView<?> parent, View view, final int position, fi
}
});

String manifest_string =
"{\n" +
" \"version\": \"1.0.0\",\n" +
" \"adaptationSet\": [\n" +
" {\n" +
" \"duration\": 1000,\n" +
" \"id\": 1,\n" +
" \"representation\": [\n" +
" {\n" +
" \"id\": 1,\n" +
" \"codec\": \"avc1.64001e,mp4a.40.5\",\n" +
" \"url\": \"http://las-tech.org.cn/kwai/las-test_ld500d.flv\",\n" +
" \"backupUrl\": [],\n" +
" \"host\": \"las-tech.org.cn\",\n" +
" \"maxBitrate\": 700,\n" +
" \"width\": 640,\n" +
" \"height\": 360,\n" +
" \"frameRate\": 25,\n" +
" \"qualityType\": \"SMOOTH\",\n" +
" \"qualityTypeName\": \"流畅\",\n" +
" \"hidden\": false,\n" +
" \"disabledFromAdaptive\": false,\n" +
" \"defaultSelected\": false\n" +
" },\n" +
" {\n" +
" \"id\": 2,\n" +
" \"codec\": \"avc1.64001f,mp4a.40.5\",\n" +
" \"url\": \"http://las-tech.org.cn/kwai/las-test_sd1000d.flv\",\n" +
" \"backupUrl\": [],\n" +
" \"host\": \"las-tech.org.cn\",\n" +
" \"maxBitrate\": 1300,\n" +
" \"width\": 960,\n" +
" \"height\": 540,\n" +
" \"frameRate\": 25,\n" +
" \"qualityType\": \"STANDARD\",\n" +
" \"qualityTypeName\": \"标清\",\n" +
" \"hidden\": false,\n" +
" \"disabledFromAdaptive\": false,\n" +
" \"defaultSelected\": true\n" +
" },\n" +
" {\n" +
" \"id\": 3,\n" +
" \"codec\": \"avc1.64001f,mp4a.40.5\",\n" +
" \"url\": \"http://las-tech.org.cn/kwai/las-test.flv\",\n" +
" \"backupUrl\": [],\n" +
" \"host\": \"las-tech.org.cn\",\n" +
" \"maxBitrate\": 2300,\n" +
" \"width\": 1280,\n" +
" \"height\": 720,\n" +
" \"frameRate\": 30,\n" +
" \"qualityType\": \"HIGH\",\n" +
" \"qualityTypeName\": \"高清\",\n" +
" \"hidden\": false,\n" +
" \"disabledFromAdaptive\": false,\n" +
" \"defaultSelected\": false\n" +
" }\n" +
" ]\n" +
" }\n" +
" ]\n" +
"}";

mAdapter.addItem(manifest_string, "las test");
mAdapter.addItem("http://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/bipbop_4x3_variant.m3u8", "bipbop basic master playlist");
mAdapter.addItem("http://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/gear1/prog_index.m3u8", "bipbop basic 400x300 @ 232 kbps");
mAdapter.addItem("http://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/gear2/prog_index.m3u8", "bipbop basic 640x480 @ 650 kbps");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl
private String TAG = "IjkVideoView";
// settable by the client
private Uri mUri;
private String mManifestString;
private Map<String, String> mHeaders;

// all possible internal states
Expand Down Expand Up @@ -253,7 +254,12 @@ public void setHudView(TableLayout tableLayout) {
* @param path the path of the video.
*/
public void setVideoPath(String path) {
setVideoURI(Uri.parse(path));
if (path.contains("adaptationSet")){
mManifestString = path;
setVideoURI(Uri.parse("ijklas:"));
} else {
setVideoURI(Uri.parse(path));
}
}

/**
Expand Down Expand Up @@ -1037,6 +1043,11 @@ public IMediaPlayer createPlayer(int playerType) {
ijkMediaPlayer = new IjkMediaPlayer();
ijkMediaPlayer.native_setLogLevel(IjkMediaPlayer.IJK_LOG_DEBUG);

if (mManifestString != null) {
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "iformat", "ijklas");
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "find_stream_info", 0);
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "manifest_string", mManifestString);
}
if (mSettings.getUsingMediaCodec()) {
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec", 1);
if (mSettings.getUsingMediaCodecAutoRotate()) {
Expand Down
6 changes: 4 additions & 2 deletions config/module-lite.sh
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-programs"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-ffmpeg"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-ffplay"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-ffprobe"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-ffserver"
#export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-ffserver"

# Documentation options:
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-doc"
Expand Down Expand Up @@ -58,7 +58,7 @@ export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-network"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-d3d11va"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-dxva2"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-vaapi"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-vda"
#export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-vda"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-vdpau"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-videotoolbox"

Expand Down Expand Up @@ -88,6 +88,7 @@ export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-muxer=mp4"

# ./configure --list-demuxers
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-demuxers"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-demuxer=ijk*"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-demuxer=aac"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-demuxer=concat"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-demuxer=data"
Expand Down Expand Up @@ -127,6 +128,7 @@ export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-bsf=noise"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-bsf=remove_extradata"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-bsf=text2movsub"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-bsf=vp9_superframe"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-bsf=eac3_core"

# ./configure --list-protocols
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-protocols"
Expand Down
2 changes: 2 additions & 0 deletions ijkmedia/ijkplayer/Android.mk
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ LOCAL_SRC_FILES += android/pipeline/ffpipeline_android.c
LOCAL_SRC_FILES += android/pipeline/ffpipenode_android_mediacodec_vdec.c

LOCAL_SRC_FILES += ijkavformat/allformats.c
LOCAL_SRC_FILES += ijkavformat/cJSON.c
LOCAL_SRC_FILES += ijkavformat/ijklas.c
LOCAL_SRC_FILES += ijkavformat/ijklivehook.c
LOCAL_SRC_FILES += ijkavformat/ijkmediadatasource.c
LOCAL_SRC_FILES += ijkavformat/ijkio.c
Expand Down
17 changes: 14 additions & 3 deletions ijkmedia/ijkplayer/ff_ffplay.c
Original file line number Diff line number Diff line change
Expand Up @@ -3116,6 +3116,9 @@ static int read_thread(void *arg)

if (ffp->iformat_name)
is->iformat = av_find_input_format(ffp->iformat_name);

av_dict_set_intptr(&ffp->format_opts, "video_cache_ptr", (intptr_t)&ffp->stat.video_cache, 0);
av_dict_set_intptr(&ffp->format_opts, "audio_cache_ptr", (intptr_t)&ffp->stat.audio_cache, 0);
err = avformat_open_input(&ic, is->filename, is->iformat, &ffp->format_opts);
if (err < 0) {
print_error(is->filename, err);
Expand Down Expand Up @@ -3993,7 +3996,6 @@ FFPlayer *ffp_create()
ffp->meta = ijkmeta_create();

av_opt_set_defaults(ffp);

return ffp;
}

Expand Down Expand Up @@ -4134,7 +4136,7 @@ void *ffp_set_ijkio_inject_opaque(FFPlayer *ffp, void *opaque)
ijkio_manager_destroyp(&ffp->ijkio_manager_ctx);
ijkio_manager_create(&ffp->ijkio_manager_ctx, ffp);
ijkio_manager_set_callback(ffp->ijkio_manager_ctx, ijkio_app_func_event);
ffp_set_option_int(ffp, FFP_OPT_CATEGORY_FORMAT, "ijkiomanager", (int64_t)(intptr_t)ffp->ijkio_manager_ctx);
ffp_set_option_intptr(ffp, FFP_OPT_CATEGORY_FORMAT, "ijkiomanager", (uintptr_t)ffp->ijkio_manager_ctx);

return prev_weak_thiz;
}
Expand All @@ -4148,7 +4150,7 @@ void *ffp_set_inject_opaque(FFPlayer *ffp, void *opaque)

av_application_closep(&ffp->app_ctx);
av_application_open(&ffp->app_ctx, ffp);
ffp_set_option_int(ffp, FFP_OPT_CATEGORY_FORMAT, "ijkapplication", (int64_t)(intptr_t)ffp->app_ctx);
ffp_set_option_intptr(ffp, FFP_OPT_CATEGORY_FORMAT, "ijkapplication", (uint64_t)(intptr_t)ffp->app_ctx);

ffp->app_ctx->func_on_app_event = app_func_event;
return prev_weak_thiz;
Expand All @@ -4172,6 +4174,15 @@ void ffp_set_option_int(FFPlayer *ffp, int opt_category, const char *name, int64
av_dict_set_int(dict, name, value, 0);
}

void ffp_set_option_intptr(FFPlayer *ffp, int opt_category, const char *name, uintptr_t value)
{
if (!ffp)
return;

AVDictionary **dict = ffp_get_opt_dict(ffp, opt_category);
av_dict_set_intptr(dict, name, value, 0);
}

void ffp_set_overlay_format(FFPlayer *ffp, int chroma_fourcc)
{
switch (chroma_fourcc) {
Expand Down
1 change: 1 addition & 0 deletions ijkmedia/ijkplayer/ff_ffplay.h
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ void *ffp_set_inject_opaque(FFPlayer *ffp, void *opaque);
void *ffp_set_ijkio_inject_opaque(FFPlayer *ffp, void *opaque);
void ffp_set_option(FFPlayer *ffp, int opt_category, const char *name, const char *value);
void ffp_set_option_int(FFPlayer *ffp, int opt_category, const char *name, int64_t value);
void ffp_set_option_intptr(FFPlayer *ffp, int opt_category, const char *name, uintptr_t value);

int ffp_get_video_codec_info(FFPlayer *ffp, char **codec_info);
int ffp_get_audio_codec_info(FFPlayer *ffp, char **codec_info);
Expand Down
1 change: 0 additions & 1 deletion ijkmedia/ijkplayer/ff_ffplay_options.h
Original file line number Diff line number Diff line change
Expand Up @@ -206,7 +206,6 @@ static const AVOption ffp_context_options[] = {
OPTION_OFFSET(ijkmeta_delay_init), OPTION_INT(0, 0, 1) },
{ "render-wait-start", "render wait start",
OPTION_OFFSET(render_wait_start), OPTION_INT(0, 0, 1) },

{ NULL }
};

Expand Down
4 changes: 3 additions & 1 deletion ijkmedia/ijkplayer/ijkavformat/allformats.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@
#define IJK_REGISTER_DEMUXER(x) \
{ \
extern AVInputFormat ijkff_##x##_demuxer; \
ijkav_register_input_format(&ijkff_##x##_demuxer); \
int ijkav_register_##x##_demuxer(AVInputFormat *demuxer, int demuxer_size); \
ijkav_register_##x##_demuxer(&ijkff_##x##_demuxer, sizeof(AVInputFormat)); \
}

#define IJK_REGISTER_PROTOCOL(x) \
Expand Down Expand Up @@ -86,5 +87,6 @@ void ijkav_register_all(void)
IJK_REGISTER_PROTOCOL(ijksegment);
/* demuxers */
IJK_REGISTER_DEMUXER(ijklivehook);
IJK_REGISTER_DEMUXER(ijklas);
av_log(NULL, AV_LOG_INFO, "===== custom modules end =====\n");
}

0 comments on commit cecd2b4

Please sign in to comment.