Merge pull request #10912 from Stypox/download-fixes

Download fixes
This commit is contained in:
Stypox 2024-03-28 19:14:20 +01:00 committed by GitHub
commit 3f94e7b638
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 26 additions and 57 deletions

View File

@ -7,8 +7,6 @@ import static org.schabi.newpipe.util.Localization.assureCorrectAppLanguage;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnDismissListener;
import android.content.Intent;
import android.content.ServiceConnection;
import android.content.SharedPreferences;
@ -113,14 +111,11 @@ public class DownloadDialog extends DialogFragment
@State
int selectedSubtitleIndex = 0; // default to the first item
@Nullable
private OnDismissListener onDismissListener = null;
private StoredDirectoryHelper mainStorageAudio = null;
private StoredDirectoryHelper mainStorageVideo = null;
private DownloadManager downloadManager = null;
private ActionMenuItemView okButton = null;
private Context context;
private Context context = null;
private boolean askForSavePath;
private AudioTrackAdapter audioTrackAdapter;
@ -195,13 +190,6 @@ public class DownloadDialog extends DialogFragment
this.selectedVideoIndex = ListHelper.getDefaultResolutionIndex(context, videoStreams);
}
/**
* @param onDismissListener the listener to call in {@link #onDismiss(DialogInterface)}
*/
public void setOnDismissListener(@Nullable final OnDismissListener onDismissListener) {
this.onDismissListener = onDismissListener;
}
/*//////////////////////////////////////////////////////////////////////////
// Android lifecycle
@ -221,6 +209,8 @@ public class DownloadDialog extends DialogFragment
return;
}
// context will remain null if dismiss() was called above, allowing to check whether the
// dialog is being dismissed in onViewCreated()
context = getContext();
setStyle(STYLE_NO_TITLE, ThemeHelper.getDialogTheme(context));
@ -305,6 +295,9 @@ public class DownloadDialog extends DialogFragment
@Nullable final Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
dialogBinding = DownloadDialogBinding.bind(view);
if (context == null) {
return; // the dialog is being dismissed, see the call to dismiss() in onCreate()
}
dialogBinding.fileName.setText(FilenameUtils.createFilename(getContext(),
currentInfo.getName()));
@ -364,14 +357,6 @@ public class DownloadDialog extends DialogFragment
});
}
@Override
public void onDismiss(@NonNull final DialogInterface dialog) {
super.onDismiss(dialog);
if (onDismissListener != null) {
onDismissListener.onDismiss(dialog);
}
}
@Override
public void onDestroy() {
super.onDestroy();

View File

@ -11,7 +11,6 @@ import org.schabi.newpipe.extractor.stream.Stream;
import org.schabi.newpipe.extractor.stream.VideoStream;
import org.schabi.newpipe.util.StreamItemAdapter.StreamInfoWrapper;
import java.util.Comparator;
import java.util.List;
public class SecondaryStreamHelper<T extends Stream> {
@ -43,42 +42,27 @@ public class SecondaryStreamHelper<T extends Stream> {
@NonNull final List<AudioStream> audioStreams,
@NonNull final VideoStream videoStream) {
final MediaFormat mediaFormat = videoStream.getFormat();
if (mediaFormat == null) {
if (mediaFormat == MediaFormat.WEBM) {
return audioStreams
.stream()
.filter(audioStream -> audioStream.getFormat() == MediaFormat.WEBMA
|| audioStream.getFormat() == MediaFormat.WEBMA_OPUS)
.max(ListHelper.getAudioFormatComparator(MediaFormat.WEBMA,
ListHelper.isLimitingDataUsage(context)))
.orElse(null);
} else if (mediaFormat == MediaFormat.MPEG_4) {
return audioStreams
.stream()
.filter(audioStream -> audioStream.getFormat() == MediaFormat.M4A)
.max(ListHelper.getAudioFormatComparator(MediaFormat.M4A,
ListHelper.isLimitingDataUsage(context)))
.orElse(null);
} else {
return null;
}
switch (mediaFormat) {
case WEBM:
case MPEG_4: // Is MPEG-4 DASH?
break;
default:
return null;
}
final boolean m4v = mediaFormat == MediaFormat.MPEG_4;
final boolean isLimitingDataUsage = ListHelper.isLimitingDataUsage(context);
Comparator<AudioStream> comparator = ListHelper.getAudioFormatComparator(
m4v ? MediaFormat.M4A : MediaFormat.WEBMA, isLimitingDataUsage);
int preferredAudioStreamIndex = ListHelper.getAudioIndexByHighestRank(
audioStreams, comparator);
if (preferredAudioStreamIndex == -1) {
if (m4v) {
return null;
}
comparator = ListHelper.getAudioFormatComparator(
MediaFormat.WEBMA_OPUS, isLimitingDataUsage);
preferredAudioStreamIndex = ListHelper.getAudioIndexByHighestRank(
audioStreams, comparator);
if (preferredAudioStreamIndex == -1) {
return null;
}
}
return audioStreams.get(preferredAudioStreamIndex);
}
public T getStream() {

View File

@ -411,7 +411,7 @@ public class DownloadManagerService extends Service {
mission.threadCount = threads;
mission.source = source;
mission.nearLength = nearLength;
mission.recoveryInfo = recovery.toArray(MissionRecoveryInfo[]::new);
mission.recoveryInfo = recovery.toArray(new MissionRecoveryInfo[0]);
if (ps != null)
ps.setTemporalDir(DownloadManager.pickAvailableTemporalDir(this));